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

Вниз

Каким образом можно к одной записи привязать разное количество   Найти похожие ветки 

 
Miwa   (2004-01-04 13:57) [0]

полей? Тоесть, например, есть база с блюдами, или фильмами, или запчастями для компов или еще чего. Естессно, что в каждом блюде есть разное количество ингридиентов, в фильме - актеров, в компьютере - винтов/процессоров и т.д.
Представляю себе это следующим образом: есть отдельная таблица с ингридиентами/актерами/запчастями. Тогда в главной таблице (где инфо о блюде/фильме/компе) может быть:
а) достаточное количество интовых полей чтобы удовлетворить любого гурмана/киномана/хакера;
б) есть одно строковое поле, в котором хранятся номера ингридиентов/актеров/харда - тогда для того чтобы узнать полную информацию о фильме нужно делать два запроса;
в) сделать десяток воспомагательных таблиц например по пять столбцов: когда заканчивается первых пять столбцов, начинаем использовать вторую таблицу, третью... или просто добавляем еще одну запись в первую.

Но у всех этих способов есть очевидные недостатки.

Вот в связи с этим вопросс: как это решается реально?

З.Ы. Прошу прощения за возможно профанский вопросс и такое же использование терминологии - только начал изучать базы и вот интерессно стало. А в рекомендованых книгах я такого не нашел. Может, плохо искал? :о)


 
Sergey13   (2004-01-04 14:13) [1]

>Вот в связи с этим вопросс: как это решается реально?
Три таблицы:
1.Наименование блюда (фильма, компа)+ некоторая инфа, относящаяся именно к нему.
2.Справочник ингидиентов(актеров,запчастей)
3.Таблица связей, где на блюдо с кодом 13 есть несколько записей с кодами и количеством ингридиентов. Т.е. связок
13-10
13-22
13-56
13-89
например.
Рекомендуется почитать про мастер-детальные связи в программе и первичные/внешние ключи в БД.


 
miwa   (2004-01-04 14:22) [2]

Вав. Круто. Блин, ну почему такие хорошие вещи называются такимим страшными словами: "мастер-детальные связи". Прям для извращенцев з производства деталей. Бррр... :о))
Спасибо.


 
kaif   (2004-01-04 16:26) [3]

Рекомендую систему справочников с наследованием атрибутов в моей программе Allegro. Там эта задача решена. Описание можешь найти на сайте http://www.gaapinvest.com. Там можно и на сайте почитать и скачать в виде pdf.


 
Johnmen   (2004-01-04 22:17) [4]

>Miwa ©

Это стандартно называется "связь многие-ко-многим".
Реализуется, как сказал Sergey13 © (04.01.04 14:13, через 3 таблицы.
В связующей таблице 2 int поля - ссылка на гурмана из табл.гурманов и ссылка на блюдо из табл.блюд.
13-10
13-22
13-56
25-56
99-56
...
Причем пара значений этих полей уникальна, т.е. уникальный индекс.


 
Ильш   (2004-01-05 07:03) [5]

Плохо искал! Очень плохо :(
Такое или типа таког в каждой нормальной книге по базам описано. Или самому на основе теории додумать можно!



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

Форум: "Базы";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
3-93393
Centurion
2003-12-30 13:48
2004.01.29
Прерывание запросов


1-93574
mixa
2004-01-17 04:43
2004.01.29
Как изменить дату на компьютере?


1-93555
Ramario
2004-01-14 12:38
2004.01.29
Средняя кнопка мыши


8-93587
Alex
2003-09-25 10:37
2004.01.29
Бесконечное воспроизведение музыки


14-93673
Holy
2004-01-07 11:19
2004.01.29
Инсталятор





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский