Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.057 c
2-1164036911
никв
2006-11-20 18:35
2006.12.10
adoquery в консоли


15-1163699126
furyz
2006-11-16 20:45
2006.12.10
WineHQ + FreeBSD


15-1164184841
zdm
2006-11-22 11:40
2006.12.10
INDY attach


15-1163854834
MsGuns
2006-11-18 16:00
2006.12.10
Поздравляю болельщиков ЦСКА !!!


15-1164104450
Сало
2006-11-21 13:20
2006.12.10
Архангельский. Приемы программирования в Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский