Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


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, Другие поля


Наверх

Титульная страница Поиск, карта сайта Написать письмо