СУБД - Firebird, Язык - Delphi6
Имеется несколько связанных таблиц, скажем "Организации", "Филиалы", "Отделы".
Вопрос: при создании БД лучше создать одну таблицу (по иерархическому принципу)
или связать эти 3 таблицы по принципу master-detail???
Какой подход лучше в плане быстродействия и с т.з. лёгкости создания приложения
иерархия или master&detail
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
А если ситуация такая:
есть "Филиалы", состоящие из "Отделений", они в свою делятся на "Участки".
Притом, и филиалы и отделения и участки имеют одинаковые реквизиты (ИНН, КПП и другие).
Можно это реализовать как master-detail. Но!!!
В БД есть таблица, в которой имеется внешний ключ, в качестве которого нужно выбирать владельца, т.е. первичный ключ филиала, отделения или участка. А это, как мне кажется можно реализовать только через иерархию. Или я ошибаюсь. Помогите разобраться, плз!?
есть "Филиалы", состоящие из "Отделений", они в свою делятся на "Участки".
Притом, и филиалы и отделения и участки имеют одинаковые реквизиты (ИНН, КПП и другие).
Можно это реализовать как master-detail. Но!!!
В БД есть таблица, в которой имеется внешний ключ, в качестве которого нужно выбирать владельца, т.е. первичный ключ филиала, отделения или участка. А это, как мне кажется можно реализовать только через иерархию. Или я ошибаюсь. Помогите разобраться, плз!?
Это можно реализовать и через иерархию и через связанные реляционными отношениями таблицы. Как это сделать решать тебе. По своему опыту могу сказать, что иерархические таблицы в реляцонных БД если и используются, то чаще всего в справочниках. Судя по твоему вопросу у тебя как раз справочник и есть.santilaas писал(а):А если ситуация такая:
Можно это реализовать как master-detail. Но!!!
В БД есть таблица, в которой имеется внешний ключ, в качестве которого нужно выбирать владельца, т.е. первичный ключ филиала, отделения или участка. А это, как мне кажется можно реализовать только через иерархию. Или я ошибаюсь. Помогите разобраться, плз!?
Я только не могу понять одного:Это можно реализовать и через иерархию и через связанные реляционными отношениями таблицы
Ведь если у нас мастер-деталь, тогда, учитывая, что:
в качестве внешнего ключа мы можем указать ссылку лишь!!! на одну из таблиц: "Филиалы", "Отделения", "Участки". А нужно, чтобы владельцем для разных записей были и филиалы, и отделения и участки.В БД есть таблица, в которой имеется внешний ключ, в качестве которого нужно выбирать владельца, т.е. первичный ключ филиала, отделения или участка
Поэтому я думаю, что задача реализуется только через иерархию!?