[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Организация БД
Игорь_Vasinsky
Интересно ваше мнение. Проектирую БД на тему движение товара магазин склад операции (продажа, трансфер, возврат и т.д.)

//Таблица магазины
уникальный id
название
страна
адрес

//Таблица товаров
уникальный id
название
кол-во
цена

// Группа товаров
уникальный id
название группы

//Свойства товаров
уникальный id
название
значение
id группы
id товара

//Операции
уникальный id
код операции (1 - продажа, 2-трансфер на склад, 3-трансфер в магазин)
id товара
количество (по каждому товару)
время начала/завершения операции
статус операции (1 - выполнен, 2 - в процессе, 3 - отказ/возврат)

//Склады
уникальный id
наименование
город
адрес

//Состояние товара на складе
id товара
кол-во товара (по каждому наименованию)
id склада




Что скажете на собственном опыте? не слишком я таблиц наплодил? smile.gif



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
kaww
Кто такие группы товаров и почему они связаны с товарами через св-ва?
Игорь_Vasinsky
группа - для группировки товаров по свойствам.

это товары связаны со свойствами через группы

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
dron4ik
Цитата (Игорь_Vasinsky @ 18.02.2013 - 13:04)
группа - для группировки товаров по свойствам.

это товары связаны со свойствами через группы
Игорь_Vasinsky
Цитата
что?)


есть товар. у него есть свои свойства, кроме стандартных (цена, кол-во)
у телевизора диагональ и т.д.
у стиральной машины - мощность и т.д.

мне удобней создать группы товаров
а в таблице свойств - указать принадлежность к группе


ещё вопрос.

хочу чтоб по дефолту писалось в БД время операции.

тут у меня 2 варианта

TIMESTAMP DEFAULT CURRENT_TIMESTAMP not null

и

DATETIME DEFAULT NOW()


мне нужно будет делать выборку по кварталам, полугодиям и т.д., след - но чтоб не было мороки - мне предпочтительней 2й вариант, но видел в сети сообщения - что у кого то второй вариант вызывает ошибку

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
kaww
Исходя из сущностей, которые вы определили, делал бы как-то так (если ничего не упустил)
shops
shop_id
name
etc..


products
product_id
name
etc...

groups
group_id
name
etc...


attributes
attribute_id
name
etc...

attribute_values
value_id
attribute_id
value
etc...

group_attributes
row_id
group_id
attribute_id

product_attribute_values
row_id
product_id
attribute_id
value_id
value (для атрибутов, предполагающих ввод текста)

warehouse
warehouse_id
name
etc...

warechouse_products
row_id
warehouse_id
product_id
amount

product_operation_types
operation_id
name
etc...

product_operation_log
row_id
product_id
operation_id
date
etc...
Игорь_Vasinsky
да, чет я упустил из виду

Цитата
attributes
attribute_id
name
etc...

attribute_values
value_id
attribute_id
value
etc...

group_attributes
row_id
group_id
attribute_id


по памяти составлял. забыл уже

я решил убрать таблицу values и вместо неё добавить 2 таблицы

//Атрибуты
уникальный id
name
group

//Значения атрибутов
id атрибута
id товара
значение


и аналогично с операциями.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
а по этому вопросу подскажите

ещё вопрос.

хочу чтоб по дефолту писалось в БД время операции.

тут у меня 2 варианта

TIMESTAMP DEFAULT CURRENT_TIMESTAMP not null

и

DATETIME DEFAULT NOW()


мне нужно будет делать выборку по кварталам, полугодиям и т.д., след - но чтоб не было мороки - мне предпочтительней 2й вариант, но видел в сети сообщения - что у кого то второй вариант вызывает ошибку

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
killer8080
что такое?
Цитата (Игорь_Vasinsky @ 18.02.2013 - 15:40)
DATETIME DEFAULT NOW()

now это функция, она не может быть использована в create table, или я чего то не догоняю blink.gif
Игорь_Vasinsky
блин, я решил что она из SQL синтаксиса biggrin.gif и не проверил. лан - этот вопрос закрыт

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
kaww
Игорь_Vasinsky
ну если очень хочется NOW(), то можно заюзать триггеры
IF ISNULL(NEW.date) THEN
SET NEW.date = NOW();
END IF;
Игорь_Vasinsky
спасиб

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.