|
|
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
Как можно в таблице (одной или паре) описать ситуацию, похожую на дерево, но когда есть много детей и много родителей? Например: Завод выпускает грузовики, автобусы и трактора. У всех стоит одинаковый движок и рама. Остальное разное. При этом движок и рама тоже состоят из своих комплектующих, с которыми тоже может быть такая же фигня... Нужно описать в таблице, что, напр, у движка есть куча чайлдов, но и куча парентов. И так по всем узлам и деталям... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 15:49:13 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
sydenis, не хочу вас расстраивать, но таблиц понадобится больше, чем одна. а вся эта хрень зовется "многие-ко-многим" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 15:57:07 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
sydenis, Ну а на бумажке нарисовать? Грузовик - Движек -- гайка 10 -- болт 20 - Рама -- гайка 20 -- болт 10 Т.е. родителей у тебя все-таки ровно один ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 16:01:14 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
arni, Да я не против, чтобы много. Эспериментирую тут с 3-мя: ITEMS, PARENTS, CHILDS. Но не уверен насчёт возможных граблей. DarkMaster, у движка и рамы помимо грузовика, в родителях - автобус и трактор... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 16:06:00 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
Иерархия деталей table Details DetailID // PK ParentDetailID // FK => table Details, 0 для базовых деталей Список видов транспорта table Vehicles VehicleID // PK Состав видов транспорта (из каких базовых деталей сделаны) table VehicleDetails VehicleID // FK => table Vehicles DetailID // FK => table Details ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 16:11:51 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, Идея здравая, но в жизни всё сложнее. Ты предлагаешь выделить конечную продукцию в отдельную таблицу. Но в реальности для завода конечной продукцией может быть и что-то из комплектующих, например, движки и колёса. А также конечным продуктом может стать канеткой-нть ракетопароход, состоящий автобуса, скрещенного с трактором. То есть тут не понятия конечного продукта - всё может быть как узлом, там и запчастью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 16:23:39 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
sydenisDarkMaster, у движка и рамы помимо грузовика, в родителях - автобус и трактор... Не-а... У тебя 3 разных изделия могут состоять из одних и тех же деталей. Т.е. фактически тебе нужно соотношение: изделие <--> состоит из .. Изделие у тебя всегда одно (родитель), составляющих много (дети). То, что изделие может быть составной частью чего-то еще - просто очередной уровень иерархии. Т.е. для изделия "ракетоплан" у тебя детьми будут "автобус" и "трактор", которые являются сами родителями "рам" и "движков", которые в свою очередь .... Идея ясна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 16:55:05 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
sydenisFr0sT-Brutal, Идея здравая, но в жизни всё сложнее. Ты предлагаешь выделить конечную продукцию в отдельную таблицу. Но в реальности для завода конечной продукцией может быть и что-то из комплектующих, например, движки и колёса. А также конечным продуктом может стать канеткой-нть ракетопароход, состоящий автобуса, скрещенного с трактором. То есть тут не понятия конечного продукта - всё может быть как узлом, там и запчастью. Я нигде и не говорил о понятии "конечная продукция". У меня есть только "деталь" и "вид транспорта". Что из этого завод продает - уже доп. задание, изначально не озвученное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 18:14:39 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, Дело не в "неозвученном", а просто я не понял по какому принципу ты трансп.средства вывел в отдельную таблицу. Почему их, а не что-нибудь другое, с учётом того, что все там равны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 18:38:09 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
DarkMaster, То есть предлагаешь две таблицы 1. Детали (id, name) 2. Связи (parent_id, child_id) типа: автобус движок автобус рама трактор движок трактор рама так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 18:39:39 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
sydenis, Примерно. Таблица связей (Links): ID ParentID -> FK на ID Доп. информация (наименование к примеру) Таблица составляющих (Details) (справочник): ID Все, что может описывать составляющую часть Тогда у тебя получится примерно такое (это собственно информация, что из чего состоит): LINKS: ID=1, PARENTID=0, NAME=Автобус, DETAIL_INFO_ID=10001 ID=2, PARENTID=1, NAME=Рама, DETAIL_INFO_ID=10002 ID=3, PARENTID=1, NAME=Движек, DETAIL_INFO_ID=21234 DETAILS: ID=10001, NAME=Автобус обыкновенный ID=10002, NAME=Рама марки 1234 ID=21234, NAME=Движек класса ДО-1 Т.е. при выборе в дереве "Автобус" ты сразу видишь, что он состоит из Рама и Движек и обратившись к DETAILS ты получишь инфу по составляющим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 19:06:29 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Ну вроде я тоже самое и написал, только ты у себя в Links ещё добавил ID (видимо в кач-ве ПК). В этом есть скрытый смысл? Вроде PARENTID и DETAIL_INFO_ID будут давать уникальное сочетание.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 19:20:17 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
sydenisпросто я не понял по какому принципу ты трансп.средства вывел в отдельную таблицу. Почему их, а не что-нибудь другое, с учётом того, что все там равны. Как задал вопрос - на то и отвечаю Завод выпускает грузовики, автобусы и трактора. Если выделение транспорта не нужно - тогда одна таблица с перечнем всего и одна со связями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 19:29:44 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
DETAILS: ID=101, NAME=Автобус ID=102, NAME=Рама ID=103, NAME=Колесо ID=104, NAME=Трактор ID=105, NAME=Болт LINKS: PARENTID=101, DETAIL_ID=102 // рама исп-ся в автобусе PARENTID=101, DETAIL_ID=103 // колесо исп-ся в автобусе PARENTID=104, DETAIL_ID=102 // рама исп-ся в тракторе PARENTID=102, DETAIL_ID=105 // болт исп-ся в раме ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 19:35:10 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
соответственно для выборки составляющих первого уровня select from LINKS where PARENTID=:id Пустой НД запроса select from LINKS where DETAIL_ID=:id означает конечный продукт (транспорт). А для списка продукции можно завести отдельную табличку PRODUCTS: Detail_ID => DETAILS.ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 19:40:44 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal, Мы говорим об одном и том же ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 20:00:48 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Bruta, В принципе хорошая идея - сделать отдельную таблицу для конечной продукции. Иначе из links никак не выдрать верхушки пищевой цепочки DarkMaster, Так что говорит опыт по поводу нужности / ненужности ID для links? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 20:34:12 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
sydenis, Ну я всегда обходился 2-мя ID + ParentID (который ссылается как FK на ID в этой же таблице). Зачем больше-то? Все остальное - вторично и зависит уже от конкретных потребностей (т.е. все эти ссылки на справочники, имена и прочее, и прочее). P.S. На ibase.ru лежит несколько статей по дереьям - там примеры реализации есть. И вроде (если склероз не подводит) - что-то похожее было на rsdn.ru. Кстати, ты б начал что-то делать на практике, а то мы сферического слона в вакууме обсуждаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 21:22:06 |
|
||
|
много детей и много родителей
|
|||
|---|---|---|---|
|
#18+
sydenisFr0sT-Bruta, В принципе хорошая идея - сделать отдельную таблицу для конечной продукции. Иначе из links никак не выдрать верхушки пищевой цепочки DarkMaster, Так что говорит опыт по поводу нужности / ненужности ID для links? Нет необходимости. Можно пару родитель/потомок использовать в качестве ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2013, 23:02:00 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=108&tid=1564114]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
58ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 339ms |

| 0 / 0 |
