Я работаю над приложением базы данных (Access 2007) и у меня есть пара вопросов по архитектуре. Это, безусловно, самое сложное приложение, которое я когда-либо писал.
В настоящее время у меня есть 5 таблиц, каждая со своим уникальным полем идентификатора:
- платформы
- транспортные средства
- руководства
- процедуры
- недостатки
Одна и та же ошибка может появиться в нескольких процедурах, а одна и та же процедура может появиться в нескольких руководствах. Я хотел бы предоставить пользователям возможность копировать и удалять записи, а также сшивать записи между таблицами.
В настоящее время у меня есть таблицы соединений между каждой из перечисленных выше таблиц,
- платформы_транспортные средства
- Vehicles_manuals
- руководства_процедуры
- процедуры_ошибки
Редактирование отношений между основными таблицами (путем редактирования содержимого таблиц соединения) стало довольно сложным, поскольку действия копирования и удаления имеют каскадный эффект на другие таблицы. На мой взгляд, это можно было бы эффективно выполнить с помощью рекурсии, но на самом деле заставить его работать — это совсем другая история.
Вопрос № 1: Является ли описанная мной архитектура «хорошим» способом организации этих данных или она излишне сложна? (У меня есть привычка так делать.)
Вопрос № 2: Есть ли «предпочтительный» способ сделать это?
Вопрос № 3: Не лучше ли организовать таблицы по-другому, например так:
Всего 5 столов,
- платформы
- транспортные средства
- руководства
- процедуры
- недостатки
Каждая таблица имеет ключ для своих полей содержимого, а также другой ключ, представляющий ее родительскую запись в следующей вышестоящей таблице. Например,
- платформы
- идентификатор платформы, имя_платформы
- транспортные средства
- идентификатор платформы, идентификатор транспортного средства, имя транспортного средства
- руководства
- VehicleID, manualID, manualName
- ...
Это кажется мне более простым и, конечно, менее сложным. Если бы вы все хотели предоставить некоторые профессиональные отзывы, я был бы очень признателен.
Спасибо!
Each manual can have many procedures, and each procedure can appear in many manuals
- person Ghost   schedule 01.08.2012