|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
Здравствуйте, помогите, пожалуйста, разобраться, на других форумах не могут помочь, неужели настолько сложные вещи описываю, непонятно: Составляю базу данных для пиццерии (пользователи могут на сайте оформлять заказы), составил первую концептуальную модель (ER диаграмма), 1) по заданию должно быть хотя-бы 5 основных сущностей не учитывая "слабые" и ассоциации (судя по всему "сильных") и хотя-бы одна "слабая" сущность, в интернете прочитал, слабая считается сущность которая логически зависит от другой сущности Но ведь всё от чего-то зависит, заказы зависят от клиентов (оформили или нет), если не будет заказов, то и не будет пицц/других продуктов, работников, транспортных средств, значит все сущности кроме "клиент" слабые?. Или имеется в виду, что работники, то есть люди, будут жить даже если не будет заказов? (найдут другую работу, например) 2) Должно быть хотя-бы 2 ассоциации, я правильно понимаю, это значит две связи многие-ко-многим? Может ли быть в моём примере Ассоциативная сущность "использует" между "пицца"/"не пицца" и "ингредиенты"? ведь в одной пицце/не пицце(например, пирожное, а если в той же таблице будет бутылка "Кока-колы"? меняется ли тип связи?) может использоваться много ингредиентов и каждый из ингредиентов может использоваться во многих пиццах? *Может ли быть ассоциация "готовка" между "заказы" и "работники" с атрибутом "статус заказа"? 3) Требуется использовать как минимум одну конструкцию наследования, я так понимаю, в моём случае, "не-пицца" может наследоваться от "пиццы" и можно добавить атрибут "срок годности"? И в принципе, если можно, проверьте пожалуйста, правильно я расставил связи? 1. клиенты заказы, 1:M (один клиент может сделать много заказов) 2. сотрудники заказы, 1:M (один сотрудник может делать много заказов +, возможно, один заказ могут делать несколько сотрудников (натирать сыр, раскатывать тесто, добавлять начинку?)) 3. заказы пицца/не пицца, 1:М (в одном заказе может быть много пицц, одна пицца может быть в нескольких заказах?) 4. Сотрудники транспорт, 1:M (один сотрудник может пользоваться разным транспортом (самокат, скутер, автомобиль) и одним транспортом могут пользоваться много сотрудников?) 5. Пицца/не пицца ингредиенты, M:M (в одной пицце может использоваться много ингредиентов, один ингредиент может использоваться во многих пиццах) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 21:58 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4, Добавляю ER-диаграмму, но почему-то файл не появляется.... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 22:01 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
Вроде бы, на первый взгляд все норм. Сильное-слабое, я с такими терминами не сталкивался, но, скорее всего, имеется ввиду внешний ключ который может быть NULL. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 07:13 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4, Пицца и не-пицца у вас идентичные по структуре. Имеет смысл такое? vaban4 5. Пицца/не пицца ингредиенты, M:M (в одной пицце может использоваться много ингредиентов, один ингредиент может использоваться во многих пиццах) Это просто задачка или приближено к реальности? Если более менее реальное, то нужно продумать рецепты, а не притягивать ингредиенты прям к пиццам. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 07:45 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
@PizzaPizza, Лабораторная работа. Я выбрал тему "пиццерия" В концептуальной модели (ERD) должно быть 5 основных сущностей, минимум 1 слабая сущность, связи (1 : 1 , 1 : N, N : M, унарная), минимум две ассоциации, вот я и думаю, есть ли у меня на схеме 5 основных ("сильных") сущностей и какие могут быть ассоциации, уже 3 недели потратил, тяжёлая работа и никто объяснить/помочь не может.... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 15:47 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4 Здравствуйте, помогите, пожалуйста, разобраться, на других форумах не могут помочь, неужели настолько сложные вещи описываю, непонятно: Ты слишком упираешь на теорию баз данных и слишком мало думаешь о самой базе. Отсюда и все проблемы. Сильная связь или слабая это совершенно не важно. Просто сделай базу, а потом уже давай определение. Не надо подгонять физические сущности под теоретические измышления. vaban4 Может ли быть в моём примере Ассоциативная сущность "использует" между "пицца"/"не пицца" и "ингредиенты"? Заказчик заказывает продукт. В пиццерии работает от одного до тройки поваров (редко больше) и любой из них может вмешаться в подготовку заказа на любом участке (зайди в реальную пиццерию и посмотри или поговори с работниками). Значит кто готовил конкретный заказ можно не учитывать - они все готовили. Значит тебе нужны таблица заказчиков, таблица заказов и таблица продуктов. Один заказчик может сделать много заказов на протяжении нескольких дней. Значит делаешь связь 1-М. Каждый заказ может содержать несколько продуктов - "две пиццы и три колы", например. Значит еще одна связь 1-М. У продукта могут быть варианты (пицца с овощами или колбасой, кола такая или сякая, кофе с молоком или сливками). Значит делаешь таблицу добавки и привязываешь ее к продуктам. Связь 1-М. Только учти что добавки не могут идти к любому продукту. Это проще всего решается делением добавок на группы и добавлением атрибута к продуктам "брать добавки из такой-то группы". То есть нужна еще таблица групп. Доставка это почти отдельная задача. Для ее решения в таблицу заказов достаточно добавить два поля - доставлено курьером А на транспорте Б. И все. Либо сделать отдельную таблицу "доставка" и в таблице заказов ссылаться на нее одним полем. А уже в таблице доставки можно писать курьера, транспорт, время доставки, чаевые, отзыв клиента на перегар курьера и тд и тп. Думай сначала о сущностях в физическом мире. А какая из них сильная-слабая с точки зрения теории БД - определишь уже после того как сделаешь базу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 16:03 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
White Owl, А какие могут быть ассоциации между моими сущностями? Может ли быть сущность "готовка" между "заказы" и "работники" с атрибутом "статус заказа"? (0,n - 0,n) И "Использование" между "работники" и "транспорт" с атрибутами "начало","конец" (формат у обоих дата) (1-1, 1-1)? У учителя есть пример, между сущностями "студент" и "учебная программа" ассоциация "оценки" с атрибутами "оценка" и "дата" (0, n - 0,n) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 19:31 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
White Owl, А как заполнять "mandatory" (связь между Заказы и Продукты)? Заказ -> продукты связь должна быть обязательной? так как каждый заказ обязательно содержит один или больше продуктов (иначе пустой заказ) и каждый продукт может содержаться или не содержаться в заказе? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 20:05 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
White Owl, С добавками не совсем понял. Есть сущность "продукты" с атрибутами {ИД, Название, Количество(остаток), цена, номер добавки} и сущность "добавки" с атрибутами {ИД, Название, Количество} нужна ещё промежуточная таблица? Допустим есть 6 видов добавок: {пицца с сыром, пицца с грибами, кола обычная, кола без сахара, кофе с молоком, кофе со сливками} Для чего нужна ещё таблица групп? ведь если не нужна добавка (например в продуктах есть ещё готовые эклеры) можно написать 0 в значении атрибута "номер добавки"? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 20:22 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
Может лучше сделать так? Три таблицы блюда 1 -> M состав блюда M -> 1 Ингредиенты И отдельную таблицу "добавки" где будет кола, кофе, пирожные (например), то есть готовые блюда. И в заказе могут содержаться добавки (необязательно) и блюда (обязательно). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 20:50 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4, то есть вам нужно продемонстрировать, что вы знаете понятия эти Слабая связь: библиотеки и сущности. Клиент может существовать в базе и не делать никаких заказов. Сотрудник может существовать в базе и не выполнять никаких функций. Ингредиент может иметь запись, но нигде не использоваться. Сильная связь: пицца не может не иметь связей с ингредиентами из которых она приготовлена и персоналом, который приготовил её. Ассоциации - это скорее всего таблицы связей. Вероятно рецепт пиццы может быть таким примером. Есть ингредиенты и заказы пицц, а связь (ассоциация) между ними осуществляется таблицей рецептов. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 21:06 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4 White Owl, А какие могут быть ассоциации между моими сущностями? Может ли быть сущность "готовка" между "заказы" и "работники" с атрибутом "статус заказа"? (0,n - 0,n) И "Использование" между "работники" и "транспорт" с атрибутами "начало","конец" (формат у обоих дата) (1-1, 1-1)? У учителя есть пример, между сущностями "студент" и "учебная программа" ассоциация "оценки" с атрибутами "оценка" и "дата" (0, n - 0,n) Может конечно. Если ты хочешь отдельно записывать готовку. Например человек А, начал готовить в 12:00, закончил в 12:15, за это он заработал х копеек. Если хочешь - можешь создать. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 21:16 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4 White Owl, С добавками не совсем понял. Есть сущность "продукты" с атрибутами {ИД, Название, Количество(остаток), цена, номер добавки} и сущность "добавки" с атрибутами {ИД, Название, Количество} нужна ещё промежуточная таблица? Допустим есть 6 видов добавок: {пицца с сыром, пицца с грибами, кола обычная, кола без сахара, кофе с молоком, кофе со сливками} Для чего нужна ещё таблица групп? ведь если не нужна добавка (например в продуктах есть ещё готовые эклеры) можно написать 0 в значении атрибута "номер добавки"? Если хочешь этого избежать - разбиваешь добавки на группы: добавлять туда или сюда. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 21:18 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
White Owl, "можно будет заказывать пиццу с молоком, а кофе с грибами" А следить за тем, чтобы таких ситуаций не возникало, разве не будет сайт/графический интерфейс, база данных ведь просто хранилище данных? То есть, например, на сайте клиент добавит в корзину эклеры и колу, колу у него будет возможность выбрать одну из двух вариантов, а вот эклеры нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 22:20 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4 White Owl, А следить за тем, чтобы таких ситуаций не возникало, разве не будет сайт/графический интерфейс, база данных ведь просто хранилище данных? Целостность и непротиворечивость бизнес-модели можно реализовать как в приложении так и в базе / бекэнде. По хорошему это надо делать и там и там, потому, что ошибка на фронтэнде может привести к потере / разрушению данных в базе. Опять же, у вас в задаче нет ничего про фронтэнд и надо, вероятно, полагать, что вся бизнес логика должна обеспечиваться в рамках выполнения задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 22:30 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
"разбиваешь добавки на группы: добавлять туда или сюда" Не понимаю, как будет выглядеть сущность и какие будут атрибуты? какая связь будет с сущностью "продукты"? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 22:42 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
Нашёл такую диаграмму, как она вам? может её стоит использовать + я добавлю наследование (физ/юр. лицо к "клиенты), унарная связь работники -> работники. Чтобы добавить напитки нужно создать сущность "напитки" и соединить с сущностью "заказы"? (и связь будет такая же, как у "заказы" - "заказанные пиццы" 1-M ?) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2022, 23:33 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4 White Owl, "можно будет заказывать пиццу с молоком, а кофе с грибами" А следить за тем, чтобы таких ситуаций не возникало, разве не будет сайт/графический интерфейс, база данных ведь просто хранилище данных? То есть, например, на сайте клиент добавит в корзину эклеры и колу, колу у него будет возможность выбрать одну из двух вариантов, а вот эклеры нет. Вот для этого и группы прописываются. Например у тебя будет группа: "пицце-подобное" и когда человек заказывает пиццу - интерфейс выдаст возможные добавки из этой группы. А если заказ будет на чай или кофе, то добавки будут браться из группы "горячий напиток". ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2022, 02:27 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
PizzaPizza vaban4 White Owl, А следить за тем, чтобы таких ситуаций не возникало, разве не будет сайт/графический интерфейс, база данных ведь просто хранилище данных? Целостность и непротиворечивость бизнес-модели можно реализовать как в приложении так и в базе / бекэнде. PizzaPizza По хорошему это надо делать и там и там, потому, что ошибка на фронтэнде может привести к потере / разрушению данных в базе. Но это конечно, в идеале. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2022, 02:35 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
White Owl PizzaPizza По хорошему это надо делать и там и там, потому, что ошибка на фронтэнде может привести к потере / разрушению данных в базе. Но это конечно, в идеале. ИМХО если "мусорный объект в базе" это клиент с потерянными заказами или орфанный заказ, то это он не может быть не противоречив с точки зрения бизнес логики. Потому, что в редком бизнесе такие ошибки приемлемы и тем более "удалить одной командой" информацию при подобных ошибках может себе позволить только очень непритязательный бизнес. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2022, 02:46 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
PizzaPizza White Owl пропущено... Нет, при правильном наборе ключей и ограничений на таблицах, ошибка в приложении может только дать ошибку в приложении. Или мусорный объект в базе, при этом он будет непротиворечив с точки зрения бизнес логики, и который можно будет удалить одной командой. Но это конечно, в идеале. ИМХО если "мусорный объект в базе" это клиент с потерянными заказами или орфанный заказ, то это он не может быть не противоречив с точки зрения бизнес логики. Потому, что в редком бизнесе такие ошибки приемлемы и тем более "удалить одной командой" информацию при подобных ошибках может себе позволить только очень непритязательный бизнес. Вполне реальная ситуация: - Звонит человек говорит что мол хочу стать вашим клиентом. Клерк говорит "ОК, диктуйте свое имя" и нажимает кнопку "добавить клиента". - Звонок обрывается... - В базе есть клиент с уникальным ID, но больше про него ничего не известно. Даже если тот-же самый человек позвонит - ему будет заново выдан ID при создании клиента. И да, потенциальный клиент может пропасть в любой момент - может даже почти целиком пройти все интервью и потом заявить: "а знаете, я передумал, прощайте". А в это время уже в несколько физических таблиц были помещены новые записи описывающие этого человека, который так и не стал клиентом. За год, в среднем, таких "мусорных клиентов" у нас набирается в среднем от пяти до десяти процентов от количества новых клиентов. Баг в приложении? Возможно. Но этот баг существует уже около сорока лет - ядро приложения до сих пор живет на Cobol, а там откат транзакции сложен . И этот баг даже стал фичей, этих клиентов раз в год переносят из списка клиентов в список "потенциальных" клиентов, для оценки качества рекламы. Раз человек позвонил - значит реклама работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2022, 06:09 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
White Owl Вполне реальная ситуация: - Звонит человек говорит что мол хочу стать вашим клиентом. Клерк говорит "ОК, диктуйте свое имя" и нажимает кнопку "добавить клиента". - Звонок обрывается... - В базе есть клиент с уникальным ID, но больше про него ничего не известно. Даже если тот-же самый человек позвонит - ему будет заново выдан ID при создании клиента. опять же ИМХО, но ваш пример показывает ситуацию, которая никогда бы в принципе не случилась если бы я проектировал базу данных. Может это особенности кобола, но в рамках современных баз и приложений начинать транзакцию по нажатию кнопки если создается уникальный айди, я бы не стал. К тому же эти примеры не совсем корректные - вы знаете, что эти конкретные записи бесполезные и бизнес-логика подразумевает их удаление. Мусорные и орфанные записи при отсутствии проверок на стороне базы появляются не так. Например, клиент добавляет заказ и выбирает то, что например невозможно в какой то конфигурации (пицца с пиццей как топингом или чай с курьером). Если у вас ошибка на стороне приложения, то в базу могут записаться либо пустые значения либо значения из других категорий с теми же id. Например, в качестве топинга у вас будет номер курьера доставки. А на выходе вы получите пиццу со случайным топингом, который совпадет с id курьера. Или же просто запишется нулл и будет пицца без топинга или топинг без пиццы висеть в базе. Потом может это с кем то соединиться и выйти еще смешнее. Я к тому, что на стороне базы проверять полезно всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2022, 07:02 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4 тяжёлая работа Я тебя умоляю, полдня максимум. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2022, 10:02 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
fkfka2, В чём смысл вашего сообщения? я делаю это задание уже 3 недели (каждый день читая разные сайты и внося изменения в диаграмму), похвастаться, что вы такой умный? так почему не написали ничего по существу? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2022, 12:40 |
|
Слабые, сильные связи, ассоциации
|
|||
---|---|---|---|
#18+
vaban4 Нашёл такую диаграмму, как она вам? может её стоит использовать + я добавлю наследование (физ/юр. лицо к "клиенты), унарная связь работники -> работники. Чтобы добавить напитки нужно создать сущность "напитки" и соединить с сущностью "заказы"? (и связь будет такая же, как у "заказы" - "заказанные пиццы" 1-M ?) На картинке, которую я прикрепил, изображена концептуальная модель или логическая? а то имеются внешние ключи + ref таблицы (кстати зачем они нужны?) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2022, 14:30 |
|
|
start [/forum/topic.php?fid=32&tid=1539756]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 238ms |
total: | 414ms |
0 / 0 |