![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Каким образом можно к одной записи привязать разное количество [D6, IB6.x]
Miwa © (2004-01-04 13:57:00)
полей? Тоесть, например, есть база с блюдами, или фильмами, или запчастями для компов или еще чего. Естессно, что в каждом блюде есть разное количество ингридиентов, в фильме - актеров, в компьютере - винтов/процессоров и т.д.
Представляю себе это следующим образом: есть отдельная таблица с ингридиентами/актерами/запчастями. Тогда в главной таблице (где инфо о блюде/фильме/компе) может быть:
а) достаточное количество интовых полей чтобы удовлетворить любого гурмана/киномана/хакера;
б) есть одно строковое поле, в котором хранятся номера ингридиентов/актеров/харда - тогда для того чтобы узнать полную информацию о фильме нужно делать два запроса;
в) сделать десяток воспомагательных таблиц например по пять столбцов: когда заканчивается первых пять столбцов, начинаем использовать вторую таблицу, третью... или просто добавляем еще одну запись в первую.
Но у всех этих способов есть очевидные недостатки.
Вот в связи с этим вопросс: как это решается реально?
З.Ы. Прошу прощения за возможно профанский вопросс и такое же использование терминологии - только начал изучать базы и вот интерессно стало. А в рекомендованых книгах я такого не нашел. Может, плохо искал? :о)
Ильш (2004-01-05 07:03:00) [1]
Плохо искал!Очень плохо :(
Такое или типа таког в каждой нормальной книге по базам описано. Или самому на основе теории додумать можно!
Johnmen (2004-01-04 22:17:00) [2]
>Miwa ©
Это стандартно называется "связь многие-ко-многим".
Реализуется, как сказал Sergey13 © (04.01.04 14:13, через 3 таблицы.
В связующей таблице 2 int поля - ссылка на гурмана из табл.гурманов и ссылка на блюдо из табл.блюд.
13-10
13-22
13-56
25-56
99-56
...
Причем пара значений этих полей уникальна, т.е. уникальный индекс.
kaif (2004-01-04 16:26:00) [3]
Рекомендую систему справочников с наследованием атрибутов в моей программе Allegro. Там эта задача решена. Описание можешь найти на сайте http://www.gaapinvest.com.Там можно и на сайте почитать и скачать в виде pdf.
miwa (2004-01-04 14:22:00) [4]
Вав. Круто. Блин, ну почему такие хорошие вещи называются такимим страшными словами: "мастер-детальные связи". Прям для извращенцев з производства деталей. Бррр... :о))
Спасибо.
Sergey13 (2004-01-04 14:13:00) [5]
>Вот в связи с этим вопросс: как это решается реально?
Три таблицы:
1.Наименование блюда (фильма, компа)+ некоторая инфа, относящаяся именно к нему.
2.Справочник ингидиентов(актеров,запчастей)
3.Таблица связей, где на блюдо с кодом 13 есть несколько записей с кодами и количеством ингридиентов. Т.е. связок
13-10
13-22
13-56
13-89
например.
Рекомендуется почитать про мастер-детальные связи в программе и первичные/внешние ключи в БД.