Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.10;
Скачать: CL | DM;

Вниз

Проектирование иерархической БД.   Найти похожие ветки 

 
Kolan ©   (2006-10-05 13:37) [0]

Здравствуйте,
 В базах почти не разбираюсь, только начал.

В предметной области есть набор объектов. Например, A, B и С

Причем, допустим, в B входит A. А C состоит из A и B.

Нужно сделать таблицу для хронения этого всего. Как я понял это делается с пом иерархии. Те таблица будет примерно такой:

DeviceID
---------
ParentID

Если бы объект мог состоять только из одного родителя все понятно:


A|A
B|A
C|B

Тут A состоит сам из себя, в В входит А. в С входит В.

А что делать  если объект состоит из двух и более родительских?


 
Sergey13 ©   (2006-10-05 13:45) [1]

> Те таблица будет примерно такой:
>
> DeviceID
> ---------
> ParentID
Нет, таблица будет примерно такой:
DeviceID, ParentID, Другие поля


 
Kolan ©   (2006-10-05 13:47) [2]

То есть для каждого родителя нужно поле? Типо:

DeviceID
---------
Parent1ID
---------
Parent2ID

итд...

А если их n штук?


 
Johnmen ©   (2006-10-05 13:48) [3]


> А что делать  если объект состоит из двух и более родительских?


Это отношение многие-ко-многим. Реализуется стандартно, через вспомогательную таблицу...


 
Lex_! ©   (2006-10-05 13:50) [4]


> А что делать  если объект состоит из двух и более родительских?

Конкретный пример?


 
Kolan ©   (2006-10-05 13:57) [5]


> Это отношение многие-ко-многим. Реализуется стандартно,
> через вспомогательную таблицу...

Все дошло, кажется :). Блин в стороно баз как-то голова не работает :)

Благодарю.


 
Kolan ©   (2006-10-05 14:04) [6]


> Конкретный пример?

Телевизор состоит из тысяч элементов...


 
Lex_! ©   (2006-10-05 14:10) [7]

т1:
телевизор - 1

т2
экран -1
схема - 2

т3
1 - 1
1 - 2

так вроде ..


 
MsGuns ©   (2006-10-05 14:13) [8]

>Lex_! ©   (05.10.06 14:10) [7]
>так вроде ..

нет, не так.


 
Kolan ©   (2006-10-05 14:15) [9]


> Lex_! ©   (05.10.06 14:10) [7]

Те на каждую деталь будет по строке? Так?


 
Lex_! ©   (2006-10-05 14:46) [10]

Ну говорят что не так, не так значит не так...


 
Sergey13 ©   (2006-10-05 14:57) [11]

> [6] Kolan ©   (05.10.06 14:04)

Деали для телека - дочки, а не родители. Как ветка для дерева.


 
Johnmen ©   (2006-10-05 15:02) [12]

ЖК матрица для телевизора - производства корейского Samsung, а микросхемы - голландского Phillips, а платы паяла - китайская Noname.
Вот уже, как минимум, три родителя у ящика...:)


 
ANB ©   (2006-10-05 15:31) [13]


> ЖК матрица для телевизора - производства корейского Samsung,
>  а микросхемы - голландского Phillips, а платы паяла - китайская
> Noname.
> Вот уже, как минимум, три родителя у ящика...:)

С точки зрения теории, это уже не родители, а потомки разного вида.

А связки - многие к многим в любых комбинациях - стандартная линковочная таблица.


 
Kolan ©   (2006-10-05 16:23) [14]

Ну я назвал это родителем тк конкретно для моей задачи сначала делают А на его основе В а уж потом С. Выходит родитель. Но суть не изменяется...


 
Sergey13 ©   (2006-10-05 16:27) [15]

> [14] Kolan ©   (05.10.06 16:23)

Типа спецификации что-то? Ну дык изделие - корень, узлы/детали - дети.
Или опиши задачу.


 
PEAKTOP ©   (2006-10-05 16:47) [16]

Помоему, классический пример составления производственной калькуляции заказа.
Организуется на двух талицах

CREATE TABLE TABL$TMC(
 ID INTEGER NOT NULL PRIMARY KEY,
 NAME VARCHAR(50)
);

CREATE TABLE TABL$TMC_CALC(
 TMC_ID INTEGER NOT NULL FOREIGN KEY REFERENCES TABL$TMC(ID),
 TMC_CHILD_ID INTEGER NOT NULL FOREIGN KEY REFERENCES TABL$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


 
atruhin ©   (2006-10-05 17:21) [17]

А почему все ополчились против наследования? [0]
Например у нас вся БД построенна на этом:
Например справочник корреспондентов:
Таблица А:
Наименование, Удален ...
Таблица B:
Аббревиатура
Далее таблицы специфических полей для: физ лиц, юр.лиц, складов и т.д таблицы в иерархии связаны 1:1
Делаем представления:
Корреспонденты - не изменяемое, по нему осуществляется поиск, отображение и т.д контроль ссылок.
физ лиц, юр.лиц - изменяемые представления. С ними работаем как с обычной таблицей.



Страницы: 1 вся ветка

Текущий архив: 2006.12.10;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.028 c
15-1163977112
wp2
2006-11-20 01:58
2006.12.10
надо в вордовский документ вставить график синусоиды...


2-1164115226
Mishenka
2006-11-21 16:20
2006.12.10
Как в Image загрузить PCX файл?


11-1140201303
Yurka R
2006-02-17 21:35
2006.12.10
Помогите начинающему в некоторых вопросах!


10-1126181335
WhiteMag
2005-09-08 16:08
2006.12.10
Уничтожение сервера приложений


2-1164319075
Draught
2006-11-24 00:57
2006.12.10
При старте приложения показываются все формы