Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проектирование базы данных
 
 автор: Slo_Nik   (09.05.2014 в 22:48)   письмо автору
 
 

Доброй ночи.

Возникла проблема с проектированием базы данных стройматериалов(арматура, бетон, металлопрокат), ни как не могу сообразить, как лучше сделать.
Подскажите, как лучше организовать БД.

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

Вроде бы ничего сложного, но есть небольшое "НО", которое не могу до конца понять.

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

<?php
CREATE TABLE 
IF NOT EXISTS `mtrl_goods`(
                                         `
id_goodsINT(3NOT NULL AUTO_INCREMENT,
                                         `
goods`    VARCHAR(50NULL# наименование
                                         
`price`    DECIMAL(5,2NULL# цена
                                         
`discountINT(2NULL# скидка
                                         
`descr`    VARCHAR(250NULL# тех. характеристика
                                         
`unit`     CHAR(5NULL# единица измерения
                                         
`sort`     CHAR(10NULL# марка
                                         
`sh`       INT(3NOT NULL DEFAULT 0# видимость на сайте
                                         
`create`   DATETIME DEFAULT '0000-00-00 00:00:00'# дата добавления товара в базу
                                         
`id_supplierINT(3NULL# поставщик
                                         
`id_categoryINT(3NULL# категория
                                         
PRIMARY KEY(`id_goods`)
                                       )
ENGINE=MyISAM DEFAULT CHARSET="utf8";


Таблица поставщиков получилась следующая:

<?php
CREATE TABLE 
IF NOT EXISTS `mtrl_supplier`(
                                            `
id_supplierINT(3NOT NULL AUTO_INCREMENT,
                                            `
supplier`    VARCHAR(150NULL,
                                            `
site`        VARCHAR(50NULL,
                                            `
email`       VARCHAR(50NULL,
                                            `
phone`       VARCHAR(100NULL,
                                            `
rating`      INT(2NULL,
                                            `
create`      DATETIME DEFAULT '0000-00-00 00:00:00',
                                            `
sh`          INT(3NOT NULL DEFAULT 0,
                                            
PRIMARY KEY(`id_supplier`)
                                          )
ENGINE=MyISAM DEFAULT CHARSET='utf8';


У одного товара может быть несколько поставщиков и у каждого своя скидка на товар.

Предполагаю, что надо сделать связующую таблицу, куда надо будет заносить id товара, id поставщика и скидку, но я не уверен, что это решение правильное. Потом надо будет организовать поиск товаров в БД по разным критериям.

Как же всё таки правильно организовать БД?
Заранее благодарю.

  Ответить  
 
 автор: elenaki   (12.05.2014 в 08:23)   письмо автору
 
   для: Slo_Nik   (09.05.2014 в 22:48)
 

.

  Ответить  
 
 автор: elenaki   (12.05.2014 в 08:24)   письмо автору
 
   для: Slo_Nik   (09.05.2014 в 22:48)
 

>Предполагаю, что надо сделать связующую таблицу, куда надо будет заносить id товара, id поставщика и скидку

Правильно. Так и надо. Поиск даже быстрее будет, если в таблице одни цифры.

  Ответить  
 
 автор: Slo_Nik   (12.05.2014 в 10:22)   письмо автору
 
   для: elenaki   (12.05.2014 в 08:24)
 

И желательно соединить таблицы при помощи foreign key?

  Ответить  
 
 автор: Sfinks   (29.05.2014 в 22:28)   письмо автору
 
   для: Slo_Nik   (12.05.2014 в 10:22)
 

Лучше не надо. Они ущербные какие-то в мускуле. Организуйте лучше эти связи на уровне моделей.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования