Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> иерархия или master&detail 
:(
    Опции темы
santilaas
Дата 8.2.2006, 04:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 322
Регистрация: 28.8.2005
Где: Блага

Репутация: нет
Всего: нет



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

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

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

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




--------------------
[
PM MAIL   Вверх
Alex
Дата 8.2.2006, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 7
Всего: 162





--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
santilaas
Дата 14.2.2006, 06:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 322
Регистрация: 28.8.2005
Где: Блага

Репутация: нет
Всего: нет



Alex, а вообще если, одни и те же таблицы можно связать по иерархическому принципу и через master-detail, то с точки зрения рациональности и эффективности какой вариант лучше? Просто я всегда работал с master-detail, а может за иерархией (для некоторых случаев) стоит быстродействие.


--------------------
[
PM MAIL   Вверх
Linco
Дата 14.2.2006, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 14.2.2006

Репутация: нет
Всего: нет



ИМХО Мастер-деталь классический способ представления данных предусмотренный стандартами РСУБД, деревья и другие отличные структуры - извращения, имеют смысл только если задача очень этого требует.
PM MAIL   Вверх
Alex
Дата 14.2.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 7
Всего: 162



Цитата(Linco @ 14.2.2006, 09:51 Найти цитируемый пост)
ИМХО Мастер-деталь классический способ представления данных предусмотренный стандартами РСУБД, деревья и другие отличные структуры - извращения, имеют смысл только если задача очень этого требует.

Полностью согласен


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
santilaas
Дата 12.3.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 322
Регистрация: 28.8.2005
Где: Блага

Репутация: нет
Всего: нет



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

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


--------------------
[
PM MAIL   Вверх
Dynamic
Дата 14.3.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 1
Всего: 15



В таких случаях, имхо, лучше одну таблицу, т.к. появляется возможность неограниченной глубины иерархии. Релизуется простым добавлением ссылки на запись верхнего уровня (родителя)


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Linco
Дата 23.3.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 14.2.2006

Репутация: нет
Всего: нет



Dynamic, неограниченная глубина иерархии легко реализуется в мастер-деталь, а дерево также требует кучу накладных расходов для поддержания его в рабочем состоянии и обработки.

Ну вот одно из возможных решений: 4 таблицы Филиалы, Отделения, Участки, Реквизиты, в реквизитах допустим ввести некое поле (0,1,2) к чему относится реквизит и PID указатель на Родительскую табличку. Создать индекс уникальный по комбинации полей. Тоже конечно нетривиально, но вполне исполнимо.

PM MAIL   Вверх
Dynamic
Дата 24.3.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 1
Всего: 15



Цитата(Linco @ 23.3.2006, 16:25 Найти цитируемый пост)
неограниченная глубина иерархии легко реализуется в мастер-деталь
Я понимаю мастер-деталь так: мастер - одна таблица, деталь - одна таблица (в простейшем случае), имеем двухступенчатую иерархию. Чтобы получить третий уровень, придется добавить подчиненную структуру к деталь, т.е. еще одну таблицу, возможно близкую по структуре. И т.д. В случае, о котором я говорил, для создания любой вложенности структуры достаточно всегда ОДНОЙ таблицы. Но это, естественно, имеет смыл при близких или идентичных по структуре данных, например, справочник статей дохода/расхода и т.п.


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Oberon83
Дата 24.3.2006, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 6.5.2005
Где: Республика Чуваши я

Репутация: нет
Всего: 1



Если я правильно понял, то можно сделать следующим образом:
Одна таблица - это Название и реквизиты (филиалов, отделений и т.д.), а вторая - это тип (как раз - таки в ней и будут храниться типы структурных подразделений организации, т.е. филиал, отделение, участок). Чем не неограниченная иерархия?
--------------------
OpenArea.ru
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Firebird, Interbase | Следующая тема »


 




[ Время генерации скрипта: 0.0706 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.