powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Слабые, сильные связи, ассоциации
25 сообщений из 58, страница 1 из 3
Слабые, сильные связи, ассоциации
    #40136486
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите, пожалуйста, разобраться, на других форумах не могут помочь, неужели настолько сложные вещи описываю, непонятно:
Составляю базу данных для пиццерии (пользователи могут на сайте оформлять заказы), составил первую концептуальную модель (ER диаграмма),
1) по заданию должно быть хотя-бы 5 основных сущностей не учитывая "слабые" и ассоциации (судя по всему "сильных") и хотя-бы одна "слабая" сущность, в интернете прочитал,
слабая считается сущность которая логически зависит от другой сущности
Но ведь всё от чего-то зависит, заказы зависят от клиентов (оформили или нет), если не будет заказов, то и не будет пицц/других продуктов, работников, транспортных средств, значит все сущности кроме "клиент" слабые?. Или имеется в виду, что работники, то есть люди, будут жить даже если не будет заказов? (найдут другую работу, например)

2) Должно быть хотя-бы 2 ассоциации, я правильно понимаю, это значит две связи многие-ко-многим?
Может ли быть в моём примере Ассоциативная сущность "использует" между "пицца"/"не пицца" и "ингредиенты"? ведь в одной пицце/не пицце(например, пирожное, а если в той же таблице будет бутылка "Кока-колы"? меняется ли тип связи?) может использоваться много ингредиентов и каждый из ингредиентов может использоваться во многих пиццах?
*Может ли быть ассоциация "готовка" между "заказы" и "работники" с атрибутом "статус заказа"?

3) Требуется использовать как минимум одну конструкцию наследования, я так понимаю, в моём случае, "не-пицца" может наследоваться от "пиццы" и можно добавить атрибут "срок годности"?

И в принципе, если можно, проверьте пожалуйста, правильно я расставил связи?
1. клиенты заказы, 1:M (один клиент может сделать много заказов)
2. сотрудники заказы, 1:M (один сотрудник может делать много заказов +, возможно, один заказ могут делать несколько сотрудников (натирать сыр, раскатывать тесто, добавлять начинку?))
3. заказы пицца/не пицца, 1:М (в одном заказе может быть много пицц, одна пицца может быть в нескольких заказах?)
4. Сотрудники транспорт, 1:M (один сотрудник может пользоваться разным транспортом (самокат, скутер, автомобиль) и одним транспортом могут пользоваться много сотрудников?)
5. Пицца/не пицца ингредиенты, M:M (в одной пицце может использоваться много ингредиентов, один ингредиент может использоваться во многих пиццах)
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136487
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vaban4, Добавляю ER-диаграмму, но почему-то файл не появляется....
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136496
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вроде бы, на первый взгляд все норм. Сильное-слабое, я с такими терминами не сталкивался, но, скорее всего, имеется ввиду внешний ключ который может быть NULL.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136497
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vaban4,

Пицца и не-пицца у вас идентичные по структуре. Имеет смысл такое?

vaban4

5. Пицца/не пицца ингредиенты, M:M (в одной пицце может использоваться много ингредиентов, один ингредиент может использоваться во многих пиццах)


Это просто задачка или приближено к реальности? Если более менее реальное, то нужно продумать рецепты, а не притягивать ингредиенты прям к пиццам.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136520
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
@PizzaPizza,
Лабораторная работа.
Я выбрал тему "пиццерия"
В концептуальной модели (ERD) должно быть 5 основных сущностей, минимум 1 слабая сущность, связи (1 : 1 , 1 : N, N : M, унарная), минимум две ассоциации, вот я и думаю, есть ли у меня на схеме 5 основных ("сильных") сущностей и какие могут быть ассоциации, уже 3 недели потратил, тяжёлая работа и никто объяснить/помочь не может....
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136521
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vaban4
Здравствуйте, помогите, пожалуйста, разобраться, на других форумах не могут помочь, неужели настолько сложные вещи описываю, непонятно:

Ты слишком упираешь на теорию баз данных и слишком мало думаешь о самой базе. Отсюда и все проблемы.
Сильная связь или слабая это совершенно не важно. Просто сделай базу, а потом уже давай определение. Не надо подгонять физические сущности под теоретические измышления.

vaban4

Может ли быть в моём примере Ассоциативная сущность "использует" между "пицца"/"не пицца" и "ингредиенты"?
Пицца или не пицца это бред.

Заказчик заказывает продукт. В пиццерии работает от одного до тройки поваров (редко больше) и любой из них может вмешаться в подготовку заказа на любом участке (зайди в реальную пиццерию и посмотри или поговори с работниками). Значит кто готовил конкретный заказ можно не учитывать - они все готовили.

Значит тебе нужны таблица заказчиков, таблица заказов и таблица продуктов.
Один заказчик может сделать много заказов на протяжении нескольких дней. Значит делаешь связь 1-М.
Каждый заказ может содержать несколько продуктов - "две пиццы и три колы", например. Значит еще одна связь 1-М.
У продукта могут быть варианты (пицца с овощами или колбасой, кола такая или сякая, кофе с молоком или сливками). Значит делаешь таблицу добавки и привязываешь ее к продуктам. Связь 1-М. Только учти что добавки не могут идти к любому продукту. Это проще всего решается делением добавок на группы и добавлением атрибута к продуктам "брать добавки из такой-то группы". То есть нужна еще таблица групп.

Доставка это почти отдельная задача. Для ее решения в таблицу заказов достаточно добавить два поля - доставлено курьером А на транспорте Б. И все.
Либо сделать отдельную таблицу "доставка" и в таблице заказов ссылаться на нее одним полем. А уже в таблице доставки можно писать курьера, транспорт, время доставки, чаевые, отзыв клиента на перегар курьера и тд и тп.

Думай сначала о сущностях в физическом мире. А какая из них сильная-слабая с точки зрения теории БД - определишь уже после того как сделаешь базу.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136538
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, А какие могут быть ассоциации между моими сущностями?
Может ли быть сущность "готовка" между "заказы" и "работники" с атрибутом "статус заказа"? (0,n - 0,n)
И
"Использование" между "работники" и "транспорт" с атрибутами "начало","конец" (формат у обоих дата) (1-1, 1-1)?

У учителя есть пример,
между сущностями "студент" и "учебная программа" ассоциация "оценки" с атрибутами "оценка" и "дата" (0, n - 0,n)
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136539
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

А как заполнять "mandatory" (связь между Заказы и Продукты)?
Заказ -> продукты связь должна быть обязательной? так как каждый заказ обязательно содержит один или больше продуктов (иначе пустой заказ) и каждый продукт может содержаться или не содержаться в заказе?
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136540
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,
С добавками не совсем понял.
Есть сущность "продукты" с атрибутами {ИД, Название, Количество(остаток), цена, номер добавки} и сущность "добавки" с атрибутами {ИД, Название, Количество} нужна ещё промежуточная таблица?
Допустим есть 6 видов добавок: {пицца с сыром, пицца с грибами, кола обычная, кола без сахара, кофе с молоком, кофе со сливками}
Для чего нужна ещё таблица групп? ведь если не нужна добавка (например в продуктах есть ещё готовые эклеры) можно написать 0 в значении атрибута "номер добавки"?
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136541
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может лучше сделать так?
Три таблицы
блюда 1 -> M состав блюда M -> 1 Ингредиенты
И отдельную таблицу "добавки" где будет кола, кофе, пирожные (например), то есть готовые блюда. И в заказе могут содержаться добавки (необязательно) и блюда (обязательно).
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136542
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vaban4,

то есть вам нужно продемонстрировать, что вы знаете понятия эти

Слабая связь: библиотеки и сущности. Клиент может существовать в базе и не делать никаких заказов. Сотрудник может существовать в базе и не выполнять никаких функций. Ингредиент может иметь запись, но нигде не использоваться.

Сильная связь: пицца не может не иметь связей с ингредиентами из которых она приготовлена и персоналом, который приготовил её.

Ассоциации - это скорее всего таблицы связей. Вероятно рецепт пиццы может быть таким примером. Есть ингредиенты и заказы пицц, а связь (ассоциация) между ними осуществляется таблицей рецептов.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136543
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vaban4
White Owl, А какие могут быть ассоциации между моими сущностями?
Может ли быть сущность "готовка" между "заказы" и "работники" с атрибутом "статус заказа"? (0,n - 0,n)
И
"Использование" между "работники" и "транспорт" с атрибутами "начало","конец" (формат у обоих дата) (1-1, 1-1)?

У учителя есть пример,
между сущностями "студент" и "учебная программа" ассоциация "оценки" с атрибутами "оценка" и "дата" (0, n - 0,n)

Может конечно. Если ты хочешь отдельно записывать готовку. Например человек А, начал готовить в 12:00, закончил в 12:15, за это он заработал х копеек.
Если хочешь - можешь создать.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136544
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vaban4
White Owl,
С добавками не совсем понял.
Есть сущность "продукты" с атрибутами {ИД, Название, Количество(остаток), цена, номер добавки} и сущность "добавки" с атрибутами {ИД, Название, Количество} нужна ещё промежуточная таблица?
Допустим есть 6 видов добавок: {пицца с сыром, пицца с грибами, кола обычная, кола без сахара, кофе с молоком, кофе со сливками}
Для чего нужна ещё таблица групп? ведь если не нужна добавка (например в продуктах есть ещё готовые эклеры) можно написать 0 в значении атрибута "номер добавки"?
Ну можно конечно и без этого, но тогда можно будет заказывать пиццу с молоком, а кофе с грибами.
Если хочешь этого избежать - разбиваешь добавки на группы: добавлять туда или сюда.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136546
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,
"можно будет заказывать пиццу с молоком, а кофе с грибами"

А следить за тем, чтобы таких ситуаций не возникало, разве не будет сайт/графический интерфейс, база данных ведь просто хранилище данных?

То есть, например, на сайте клиент добавит в корзину эклеры и колу, колу у него будет возможность выбрать одну из двух вариантов, а вот эклеры нет.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136548
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vaban4
White Owl,
А следить за тем, чтобы таких ситуаций не возникало, разве не будет сайт/графический интерфейс, база данных ведь просто хранилище данных?


Целостность и непротиворечивость бизнес-модели можно реализовать как в приложении так и в базе / бекэнде.
По хорошему это надо делать и там и там, потому, что ошибка на фронтэнде может привести к потере / разрушению данных в базе.

Опять же, у вас в задаче нет ничего про фронтэнд и надо, вероятно, полагать, что вся бизнес логика должна обеспечиваться в рамках выполнения задачи.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136551
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"разбиваешь добавки на группы: добавлять туда или сюда"

Не понимаю, как будет выглядеть сущность и какие будут атрибуты? какая связь будет с сущностью "продукты"?
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136555
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашёл такую диаграмму, как она вам? может её стоит использовать + я добавлю наследование (физ/юр. лицо к "клиенты), унарная связь работники -> работники.
Чтобы добавить напитки нужно создать сущность "напитки" и соединить с сущностью "заказы"? (и связь будет такая же, как у "заказы" - "заказанные пиццы" 1-M ?)
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136560
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vaban4
White Owl,
"можно будет заказывать пиццу с молоком, а кофе с грибами"

А следить за тем, чтобы таких ситуаций не возникало, разве не будет сайт/графический интерфейс, база данных ведь просто хранилище данных?

То есть, например, на сайте клиент добавит в корзину эклеры и колу, колу у него будет возможность выбрать одну из двух вариантов, а вот эклеры нет.
Следить конечно будет клиентский интерфейс. Но откуда он будет знать что можно с чем комбинировать?
Вот для этого и группы прописываются. Например у тебя будет группа: "пицце-подобное" и когда человек заказывает пиццу - интерфейс выдаст возможные добавки из этой группы. А если заказ будет на чай или кофе, то добавки будут браться из группы "горячий напиток".
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136561
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizza
vaban4
White Owl,
А следить за тем, чтобы таких ситуаций не возникало, разве не будет сайт/графический интерфейс, база данных ведь просто хранилище данных?


Целостность и непротиворечивость бизнес-модели можно реализовать как в приложении так и в базе / бекэнде.
Да, можно. Но лучше повесить эту задачу на базу. И поменять при нужде проще - только в одном месте меняешь. И от нескольких независимых приложений-клиентов защита.

PizzaPizza
По хорошему это надо делать и там и там, потому, что ошибка на фронтэнде может привести к потере / разрушению данных в базе.
Нет, при правильном наборе ключей и ограничений на таблицах, ошибка в приложении может только дать ошибку в приложении. Или мусорный объект в базе, при этом он будет непротиворечив с точки зрения бизнес логики, и который можно будет удалить одной командой.
Но это конечно, в идеале.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136562
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

PizzaPizza
По хорошему это надо делать и там и там, потому, что ошибка на фронтэнде может привести к потере / разрушению данных в базе.
Нет, при правильном наборе ключей и ограничений на таблицах, ошибка в приложении может только дать ошибку в приложении. Или мусорный объект в базе, при этом он будет непротиворечив с точки зрения бизнес логики, и который можно будет удалить одной командой.
Но это конечно, в идеале.


ИМХО если "мусорный объект в базе" это клиент с потерянными заказами или орфанный заказ, то это он не может быть не противоречив с точки зрения бизнес логики. Потому, что в редком бизнесе такие ошибки приемлемы и тем более "удалить одной командой" информацию при подобных ошибках может себе позволить только очень непритязательный бизнес.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136564
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizza
White Owl

пропущено...
Нет, при правильном наборе ключей и ограничений на таблицах, ошибка в приложении может только дать ошибку в приложении. Или мусорный объект в базе, при этом он будет непротиворечив с точки зрения бизнес логики, и который можно будет удалить одной командой.
Но это конечно, в идеале.


ИМХО если "мусорный объект в базе" это клиент с потерянными заказами или орфанный заказ, то это он не может быть не противоречив с точки зрения бизнес логики. Потому, что в редком бизнесе такие ошибки приемлемы и тем более "удалить одной командой" информацию при подобных ошибках может себе позволить только очень непритязательный бизнес.
Почему не может??? Запросто может.

Вполне реальная ситуация:
- Звонит человек говорит что мол хочу стать вашим клиентом. Клерк говорит "ОК, диктуйте свое имя" и нажимает кнопку "добавить клиента".
- Звонок обрывается...
- В базе есть клиент с уникальным ID, но больше про него ничего не известно. Даже если тот-же самый человек позвонит - ему будет заново выдан ID при создании клиента.

И да, потенциальный клиент может пропасть в любой момент - может даже почти целиком пройти все интервью и потом заявить: "а знаете, я передумал, прощайте". А в это время уже в несколько физических таблиц были помещены новые записи описывающие этого человека, который так и не стал клиентом.
За год, в среднем, таких "мусорных клиентов" у нас набирается в среднем от пяти до десяти процентов от количества новых клиентов.

Баг в приложении? Возможно. Но этот баг существует уже около сорока лет - ядро приложения до сих пор живет на Cobol, а там откат транзакции сложен . И этот баг даже стал фичей, этих клиентов раз в год переносят из списка клиентов в список "потенциальных" клиентов, для оценки качества рекламы. Раз человек позвонил - значит реклама работает.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136565
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl

Вполне реальная ситуация:
- Звонит человек говорит что мол хочу стать вашим клиентом. Клерк говорит "ОК, диктуйте свое имя" и нажимает кнопку "добавить клиента".
- Звонок обрывается...
- В базе есть клиент с уникальным ID, но больше про него ничего не известно. Даже если тот-же самый человек позвонит - ему будет заново выдан ID при создании клиента.


опять же ИМХО, но ваш пример показывает ситуацию, которая никогда бы в принципе не случилась если бы я проектировал базу данных. Может это особенности кобола, но в рамках современных баз и приложений начинать транзакцию по нажатию кнопки если создается уникальный айди, я бы не стал.

К тому же эти примеры не совсем корректные - вы знаете, что эти конкретные записи бесполезные и бизнес-логика подразумевает их удаление. Мусорные и орфанные записи при отсутствии проверок на стороне базы появляются не так. Например, клиент добавляет заказ и выбирает то, что например невозможно в какой то конфигурации (пицца с пиццей как топингом или чай с курьером). Если у вас ошибка на стороне приложения, то в базу могут записаться либо пустые значения либо значения из других категорий с теми же id. Например, в качестве топинга у вас будет номер курьера доставки. А на выходе вы получите пиццу со случайным топингом, который совпадет с id курьера. Или же просто запишется нулл и будет пицца без топинга или топинг без пиццы висеть в базе. Потом может это с кем то соединиться и выйти еще смешнее.

Я к тому, что на стороне базы проверять полезно всегда.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136572
fkfka2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vaban4
тяжёлая работа

Я тебя умоляю, полдня максимум.
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136586
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkfka2,

В чём смысл вашего сообщения? я делаю это задание уже 3 недели (каждый день читая разные сайты и внося изменения в диаграмму), похвастаться, что вы такой умный? так почему не написали ничего по существу?
...
Рейтинг: 0 / 0
Слабые, сильные связи, ассоциации
    #40136594
vaban4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vaban4
Нашёл такую диаграмму, как она вам? может её стоит использовать + я добавлю наследование (физ/юр. лицо к "клиенты), унарная связь работники -> работники.
Чтобы добавить напитки нужно создать сущность "напитки" и соединить с сущностью "заказы"? (и связь будет такая же, как у "заказы" - "заказанные пиццы" 1-M ?)


На картинке, которую я прикрепил, изображена концептуальная модель или логическая? а то имеются внешние ключи + ref таблицы (кстати зачем они нужны?)
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Слабые, сильные связи, ассоциации
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (10): Анонимы (7), Bing Bot, Yandex Bot, RePredeclared 6 мин.
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]