Форум: "Базы";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
ВнизSQL таблицы. Реализация. Найти похожие ветки
← →
Сергей (2003-03-18 14:35) [0]как правильно реализовать в 3х (3!) таблицах взаимоотношения между субстанциями: книги, магазины, авторы? Книга может иметь несколько авторов, автор несколько книг, книга может продаваться в нескольких магазинах, магазин может продавать несколько книг. Нужно реализовать именно в трех таблицах.
← →
alex_bredin (2003-03-18 14:51) [1]готовое решение см. В.Фаронов "Программирование БД в Delphi" Питер,2002
← →
Сергей (2003-03-18 15:03) [2]У меня нет этой книги, а ответ нужен как можно скорее. Не мог бы ты приблизительно описать решение?
← →
Johnmen (2003-03-18 15:16) [3]"Скорее только кошки родятся" (c) Остап, а не базы делаются...(с)
"Хотели, как быстрее, а получилось..." (c) полный оцтой (с)
← →
D (2003-03-18 15:41) [4]Да уж, надо бы как минимум в 5
← →
MsGuns (2003-03-18 16:02) [5]Все можно реализовать в одной (!) таблице. Но это уже клипперная идеология программеров-самоучек.
← →
MsGuns (2003-03-18 16:13) [6]Примерно так: Таблица AllInOne
-Название книги
-ФИО автора
-Название магазина
Т.е. если у Петрова есть 4 книги, то будет 4 записи. Если одна из книг есть в 5-ти магазинах, то будет 4 доп.записи с теми же двумя первыми полями, и разными третьими. Ну и так далее.
Справочники организуются виртуально, т.е. выборка с группировкой. При добавлении нового, например, автора, в таблице появляется новая запись с пустыми 1 и 3 полями, которые потом заполнятся при отнесении какой-то книги к этому автору или при попадании ее в магазин.
Если добавятся еще сущности: цена, кол-во в магазине, инфа об изданиях и тиражах и т.д. - все выбросить и читать диагноз ниже.
Все работает исключительно выборками, ключей и индексов - никаких.
ИМХО, отстой и экстралюбительство по определению.
Диагноз: БД проработана слабо, нет нормального ТЗ и описания объекта (для кого или чего делается). Непонятно происхождение критичного условия "трех таблиц"
← →
Shirson (2003-03-18 16:15) [7]А что мешает хранить в одной из таблиц (Книги), не уникальные данные?
Например "Мурзилка" продаётся в трёх магазинах и имеет двух авторов.
"Мурзилка" , "Петров" , ""
"Мурзилка" , "Иванов" , ""
"Мурзилка" , "" , "СоюзХренПечать"
"Мурзилка" , "" , "НеСоюзПечать"
"Мурзилка" , "" , "СоюзНоНеПечать"
И получай себе хоть авторов по книге, хоть книги по авторам, хоть магазины по книгам, хоть авторов по магазинам и т.д. :)
← →
Соловьев (2003-03-18 16:21) [8]5 таблиц. 3 описывают справочники:
1-й
id_magazin
name_magazin
2-й
id_book
name_book
3-й
id_avtor
name_avtor
4-я таблица описывает отношение автор написал книгу:
id_writer
id_book
id_avtor
5-я таблица описывает отношение книга, написанная автором продается в магазине:
id_magazine
id_writer
cena
← →
MsGuns (2003-03-18 16:31) [9]>Shirson © (18.03.03 16:15)
Спасибо, что проиллюстрировал мой пост ;)))))
← →
Johnmen (2003-03-18 17:28) [10]>Соловьев © (18.03.03 16:21)
Идеологически самое верное ! :)))
← →
Сергей (2003-03-18 17:48) [11]В 5 таблиц все понятно.
Нужно в 3. Условие следует принимать как сказанное свыше.
Нельзя в одну по той причине, что каждый автор, книга, магазин имеют свои собственные поля: имя, адрес, количество страниц, что-угодно-еще.
← →
Соловьев (2003-03-18 17:50) [12]2 Сергей
тогда надо читать основы построения БД: нормализация, концептуальная модель, логическая, физическая...
← →
Соловьев (2003-03-18 17:55) [13]Можно в 3-х
просто надо соеденить 1-ю+4-ю+5-ю в одну таблицу. но учти если какая-нибудь Маня введет имя магазина "Дет. книга", а дальше "Детская книга", то прийдется туго...
← →
Johnmen (2003-03-18 17:55) [14]>Соловьев © (18.03.03 17:50)
Он очень спешит...Ему некогда...:)
← →
Сергей (2003-03-18 18:12) [15]Мать моя женщина.. Нельзя просто ответить на вопрос? Если это возможно - показать как, если нет - ответить что невозможно.
Если это столь важно - все это мне нужно не для немедленной реализации. Можно считать что это сугубо теоретический вопрос. Ответ на который мне нужен сегодня. Вот и все.
← →
Соловьев (2003-03-18 18:15) [16]
> сугубо теоретический вопрос.
с точки зрения построения БД - нельзя.
А так хоть в 1-й, хоть в 2-х, ну и т.д.
← →
D (2003-03-18 18:50) [17]>5-я таблица описывает отношение книга, написанная автором продается в магазине:
>id_magazine
>id_writer
>cena
А если книгу написали 4 автора?
Скорее Id_Magazin
Id_Book
Cena, ...
← →
MsGuns (2003-03-18 22:38) [18]>D (18.03.03 18:50)
В пятой таблице ошибка (думаю, Шурка Соловьев просто спешил и описАлся). Надо, конечно же, вторым полем Id_Book. И тогда данная модель удовлетворяет всем условиям нормализации и избыточности.
Вот только автору сабжа надо чтоб самолет летал с одним крылом и все тут ! Ему объясняют, что это будет как бы и не самолет, а дельтаплан или моноплан, но ЕМУ НАДО ТАК !
А если мастаки не знают как это сделать, то они и не мастаки, а м@#$ки !
Ув.Сергей ! Если в облом читать лит-ру и понять, что тебе хотят объяснить люди знающие, порассуждай хотя бы логически:
Есть 3 объекта, каждый со своими, не совместимыми с другими, характеристиками. Это УЖЕ три таблицы. Для организации ЛЮБОЙ связи между хотя бы двумя из них надо вводить какие-то сущности, которые где-то надо хранить. Ну не решается в математике система из уравнений, число которых меньше, чем кол-во неизвестных в них ! Хотя, конечно, можно выразить одно неизвестное через другое, но для БД это слабое утешение.
← →
MsGuns (2003-03-18 22:49) [19]Присмотрелся, и у увидел художественное излишество в Шуркиной структуре. Зачем поле IdWriter ? Я бы сделал так:
4-я таблица описывает отношение автор написал книгу или участвовал в ее написании (соавтор):
id_avtor
id_book
5-я таблица описывает наличие в магазине книг (Каждая книга имеет инфу об ее авторах в 4-й таблице)
id_magazine
id_book
Я убрал цену, как несущественное с точки зрения межтабличных связей св-во. По сути имеется 2 таблицы и 3 справочника,- совершенно нормальный "джентльменский" набор для нормально спроектированной БД такого калибра.
ЗЫ. У меня возникло ощущение, что Сергей принципиально хочет получить решение в трех таблицах (поспорил ?)
← →
Shirson (2003-03-19 06:28) [20]>Сергей
Чем тебе мой вариант не понравился? Все условия выполнены. 3 таблицы, все связи сохранены. То что я 2 других таблицы не стал приводить - так это вроде и так ясно.
В той же таблице "Книги" можно хранить и количество страниц и дату выпуска и ISBN и всё что угодно. В Авторах и Магазинах тоже самое.
Вот решение. В чём проблемы?
← →
Dr_Mike (2003-03-21 19:38) [21]Гм... Жутко интересует происхождение этого мифического числа 3 - почему именно в трех надо? Что это за указание такое свыше? :-)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c