SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 27.09.2009 16:54:37

absmaks
Участник
Зарегистрирован: 27.09.2009
Сообщений: 1

построение БД

Здравствуйте.
Столкнулся с проблемой, найти какой-либо вразумительной информации по её решению не получилось, единственный вариант – большие книги-толмуды по MySQL, а хочется услышать четкий и емкий ответ.
Планирую БД для каталога товаров. Каждый товар может быть представлен в нескольких магазинах, соответсвенно цен на один товар может быть несколько, также в одном магазине может находиться N товаров.

Классический вариант

Products:
idProd
name
manufacture
image
views
category_id
subcategory_id

Shops:
idShop
name
address
description
logo
site_url
email
tel
working_time

Prices
idPrice
idProd
idShop
price

Подскажите пожалуйста, верно ли я составил таблицы, какие связи должны в таблицах ,либо если есть какая-то статья/пример подобной направленности, где бы описывались связи итд.
Я так понимаю уникальные поля таблиц надо делать Primary Key, а в другой таблице, в которую нужно передавать PK делать Foreight Key...
В чем преимущества такого подхода? (например если вместо этого просто бы писали в idShops из таблицы Prices - idShop из таблицы Shops)
Стоит ли выделить производителей, если они повторяются в товарах?

Построел зависимость в DB 4 Design как представлял это себе:
http://img28.imageshack.us/img28/6325/56368204.jpg

Буду рад любым советам!

Неактивен

 

#2 28.09.2009 05:55:46

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: построение БД

absmaks написал:

Я так понимаю уникальные поля таблиц надо делать Primary Key, а в другой таблице, в которую нужно передавать PK делать Foreight Key...
В чем преимущества такого подхода? (например если вместо этого просто бы писали в idShops из таблицы Prices - idShop из таблицы Shops)

Внешний ключ гарантирует вам целостность данных. Удалите вы магазин и останутся у вас товары с номером несуществующего магазина. А если потом добавите новй магазин с прежним номером, то...  Или сразу добавите товар с несуществующим номером магазина.
Можно конечно писать собственные обработчики, но зачем если есть внешний ключ, тем более он будет работать быстрее чем ваши обработчики.
Подробнее о внешних ключах см http://webew.ru/posts/219.webew


absmaks написал:

Стоит ли выделить производителей, если они повторяются в товарах?

А какую цель вы этим преследуете. Рекомендую посмотреть очень содержательное обсуждение как раз на эту тему - http://sqlinfo.ru/forum/viewtopic.php?id=209

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson