иерархия или master&detail

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
santilaas
Сообщения: 51
Зарегистрирован: 27 авг 2005, 21:05

иерархия или master&detail

Сообщение santilaas » 08 фев 2006, 05:06

СУБД - Firebird, Язык - Delphi6

Имеется несколько связанных таблиц, скажем "Организации", "Филиалы", "Отделы".

Вопрос: при создании БД лучше создать одну таблицу (по иерархическому принципу)
или связать эти 3 таблицы по принципу master-detail???

Какой подход лучше в плане быстродействия и с т.з. лёгкости создания приложения

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 08 фев 2006, 08:41

Entity-Relation вместе со всеми четырьмя нормальными формами нервно курят в уголке.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 08 фев 2006, 12:01

не надо ему деревья. дерево потом можно прикрутить, с существующей модели.

santilaas
Сообщения: 51
Зарегистрирован: 27 авг 2005, 21:05

Сообщение santilaas » 11 мар 2006, 17:06

А если ситуация такая:
есть "Филиалы", состоящие из "Отделений", они в свою делятся на "Участки".
Притом, и филиалы и отделения и участки имеют одинаковые реквизиты (ИНН, КПП и другие).

Можно это реализовать как master-detail. Но!!!
В БД есть таблица, в которой имеется внешний ключ, в качестве которого нужно выбирать владельца, т.е. первичный ключ филиала, отделения или участка. А это, как мне кажется можно реализовать только через иерархию. Или я ошибаюсь. Помогите разобраться, плз!?

SAMZ
Сообщения: 128
Зарегистрирован: 21 мар 2005, 08:17

Сообщение SAMZ » 13 мар 2006, 05:56

santilaas писал(а):А если ситуация такая:
Можно это реализовать как master-detail. Но!!!
В БД есть таблица, в которой имеется внешний ключ, в качестве которого нужно выбирать владельца, т.е. первичный ключ филиала, отделения или участка. А это, как мне кажется можно реализовать только через иерархию. Или я ошибаюсь. Помогите разобраться, плз!?
Это можно реализовать и через иерархию и через связанные реляционными отношениями таблицы. Как это сделать решать тебе. По своему опыту могу сказать, что иерархические таблицы в реляцонных БД если и используются, то чаще всего в справочниках. Судя по твоему вопросу у тебя как раз справочник и есть.

santilaas
Сообщения: 51
Зарегистрирован: 27 авг 2005, 21:05

Сообщение santilaas » 13 мар 2006, 13:27

Это можно реализовать и через иерархию и через связанные реляционными отношениями таблицы
Я только не могу понять одного:
Ведь если у нас мастер-деталь, тогда, учитывая, что:
В БД есть таблица, в которой имеется внешний ключ, в качестве которого нужно выбирать владельца, т.е. первичный ключ филиала, отделения или участка
в качестве внешнего ключа мы можем указать ссылку лишь!!! на одну из таблиц: "Филиалы", "Отделения", "Участки". А нужно, чтобы владельцем для разных записей были и филиалы, и отделения и участки.
Поэтому я думаю, что задача реализуется только через иерархию!?

Ответить