![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проектирование иерархической БД.
Kolan © (2006-10-05 13:37:00)Здравствуйте,
В базах почти не разбираюсь, только начал.
В предметной области есть набор объектов. Например,A,BиС
Причем, допустим, вBвходитA. АCсостоит изAиB.
Нужно сделать таблицу для хронения этого всего. Как я понял это делается с пом иерархии. Те таблица будет примерно такой:
DeviceID
---------
ParentID
Если бы объект мог состоять только из одного родителя все понятно:
A|A
B|A
C|B
Тут A состоит сам из себя, в В входит А. в С входит В.
А что делать если объект состоит из двух и более родительских?
atruhin (2006-10-05 17:21:00) [1]А почему все ополчились против наследования? [0]
Например у нас вся БД построенна на этом:
Например справочник корреспондентов:
Таблица А:
Наименование, Удален ...
Таблица B:
Аббревиатура
Далее таблицы специфических полей для: физ лиц, юр.лиц, складов и т.д таблицы в иерархии связаны 1:1
Делаем представления:
Корреспонденты - не изменяемое, по нему осуществляется поиск, отображение и т.д контроль ссылок.
физ лиц, юр.лиц - изменяемые представления. С ними работаем как с обычной таблицей.
PEAKTOP (2006-10-05 16:47:00) [2]Помоему, классический пример составления производственной калькуляции заказа.
Организуется на двух талицах
CREATE TABLETABL$TMC(
ID INTEGER NOT NULL PRIMARY KEY,
NAME VARCHAR(50)
);
CREATE TABLETABL$TMC_CALC(
TMC_ID INTEGER NOT NULL FOREIGN KEY REFERENCESTABL$TMC(ID),
TMC_CHILD_ID INTEGER NOT NULL FOREIGN KEY REFERENCESTABL$TMC(ID),
QUANT NUMERIC(15,3) DEFAULT 1.000
)
А твои объекты будут описываться следующим образом
TABL$TMC
ID NAME
--------------------
1 A
2 B
3 C
TABL$TMC_CALC
TMC_ID TMC_CHILD_ID QUANT
---------------------------------
1 2 1.000 // Причем, допустим, в B входит A.
3 1 1.000 // А C состоит из A и B.
3 2 1.000
Sergey13 (2006-10-05 16:27:00) [3]> [14] Kolan © (05.10.06 16:23)
Типа спецификации что-то? Ну дык изделие - корень, узлы/детали - дети.
Или опиши задачу.
Kolan (2006-10-05 16:23:00) [4]Ну я назвал это родителем тк конкретно для моей задачи сначала делают А на его основе В а уж потом С. Выходит родитель. Но суть не изменяется...
ANB (2006-10-05 15:31:00) [5]
> ЖК матрица для телевизора - производства корейского Samsung,
> а микросхемы - голландского Phillips, а платы паяла - китайская
> Noname.
> Вот уже, как минимум, три родителя у ящика...:)
С точки зрения теории, это уже не родители, а потомки разного вида.
А связки - многие к многим в любых комбинациях - стандартная линковочная таблица.
Johnmen (2006-10-05 15:02:00) [6]ЖК матрица для телевизора - производства корейского Samsung, а микросхемы - голландского Phillips, а платы паяла - китайская Noname.
Вот уже, как минимум, три родителя у ящика...:)
Sergey13 (2006-10-05 14:57:00) [7]> [6] Kolan © (05.10.06 14:04)
Деали для телека - дочки, а не родители. Как ветка для дерева.
Lex_! (2006-10-05 14:46:00) [8]Ну говорят что не так, не так значит не так...
Kolan (2006-10-05 14:15:00) [9]
> Lex_! © (05.10.06 14:10) [7]
Те на каждую деталь будет по строке? Так?
MsGuns (2006-10-05 14:13:00) [10]>Lex_! © (05.10.06 14:10) [7]
>так вроде ..
нет, не так.
Lex_! (2006-10-05 14:10:00) [11]т1:
телевизор - 1
т2
экран -1
схема - 2
т3
1 - 1
1 - 2
так вроде ..
Kolan (2006-10-05 14:04:00) [12]
> Конкретный пример?
Телевизор состоит из тысяч элементов...
Kolan (2006-10-05 13:57:00) [13]
> Это отношение многие-ко-многим. Реализуется стандартно,
> через вспомогательную таблицу...
Все дошло, кажется :). Блин в стороно баз как-то голова не работает :)
Благодарю.
Lex_! (2006-10-05 13:50:00) [14]
> А что делать если объект состоит из двух и более родительских?
Конкретный пример?
Johnmen (2006-10-05 13:48:00) [15]
> А что делать если объект состоит из двух и более родительских?
Это отношение многие-ко-многим. Реализуется стандартно, через вспомогательную таблицу...
Kolan (2006-10-05 13:47:00) [16]То есть для каждого родителя нужно поле? Типо:
DeviceID
---------
Parent1ID
---------
Parent2ID
итд...
А если их n штук?
Sergey13 (2006-10-05 13:45:00) [17]> Те таблица будет примерно такой:
>
> DeviceID
> ---------
> ParentID
Нет, таблица будет примерно такой:
DeviceID, ParentID, Другие поля