Софтуерно Инженерство
Loading...
+ Нов въпрос
white.shark avatar white.shark 2 Точки

[Data Modeling and E/R Diagrams] Exercises

Здравейте,

първо ще започна с това: Видях, че има тема за упражненията за курса по база данни, но мисля, че там по-скоро се търси обратна връзка относно самите упражнения, а не тяхното решаване. Затова не си зададох въпросът там, а пускам тази тема.
По темата: започнах да решавам упражнението от лекцията:"Data Modeling and E/R Diagrams", но не съм сигурен дали съм я направил правилно диаграмата? Задачата е следната:

Problem 1. Create a data model for typical Online Shop System.
We have typical online shop. Every user in the system has username, full name, phone number, website and a shopping basket. The product in the online shop has title, description, price and category. Categories have name. Reviews have content, product and user. Every user have only one shopping basket. Every shopping basket can contain many products. The amount of each product in a basket can vary from 1 to many. Every product can be in many shopping baskets. Every product has many reviews from the users.

Това е диаграмата:

Благодаря

0
Databases Basics 20/06/2015 19:15:58
RoYaL avatar RoYaL SoftUni Team Trainer 6883 Точки

Като цяло от към моделиране на мен ми се струва що-годе окей.

Виждам някои дреболии, не всяка от тях е проблем. Може би най-важното, което се сещам е Product -> Category релацията.

Така ми изглежда невъзможно да вкараш повече от един продукт в категория. Идеята е, че продуктит си имат категория, а не категорията - продукт. Би трябвало да имаш CategoryId (int) foreign key в Products, който сочи към Categories.Id.

Предполагам, че под Brackets си имал предивд Basket(s)? Според мен в ShoppingBrackets - ProductId и ProductAmount са излишни. Ако една такава кошница може да има много продукти, то за какво ти е ProductId - който е единичен. Имаш отделна таблица в която ги държиш (many-to-many, която си кръстил ProductBrackets).

ProductBrackets ще трябва в този смисъл да се промени малко. Два варианта: Първият е да сложиш още една колония - ProductAmount - за да тракваш колко пъти един продукт го има в тази кошница - например продуктИд=6, в кошницаИд=8 го има 3 пъти. Вариант две е да махнеш композитния първичен ключ и да сложиш отделна колона Id, така ще можеш да запишеш 2 или повече пъти ProductId=6;BasketId=8 (което аз лично смятам за по-правилно, защото винаги ще правиш INSERT операции, вместо INSERT OR UPDATE).

 

5
20/06/2015 19:21:41
dobrinkirilov avatar dobrinkirilov 0 Точки

Здравейте, мъча се да реша задачата, но удрям на камък. От коментара на колегата RoYal не можах да разбера коя таблица да оставя; ShopingBrackets, ProductBrackets или и двете. И как изглеждат връзките между тях. Ако някой има работеща схема моля да я сподели.   

0