Вопрос проектирования базы данных SQL - PullRequest
0 голосов
/ 05 июля 2011

У меня есть задача спроектировать базу данных SQL, которая будет записывать значения для товарных продуктов компании (номера sku). Компания имеет 7600 уникальных товарных позиций, которые необходимо отслеживать, и каждый товар будет иметь приблизительно 200 значений в течение года (одно значение для продукта в день в течение года).

Мое первое предположение состоит в том, что числа sku идут сверху вниз (у каждого sku есть строка), и каждая дата является столбцом.

Данные будут использоваться для просмотра в формате диаграммы / графика, и для них будут отображаться дополнительные расчеты (например, процентная маржа прибыли и т. Д.)

Мой вопрос:
- этот макет рекомендуется?
- Должен ли я быть осторожным с чем-либо, если данные такого типа возвращаются примерно через 15 лет (каждая таблица будет представлять год)

Есть предложения?

Ответы [ 3 ]

3 голосов
/ 05 июля 2011

Лучше иметь только 3 столбца - вместо многих, как вы предлагаете:

sku    date         value
-------------------------
1      2011-01-01   10
1      2011-01-02   12
2      2011-01-01   5

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

2 голосов
/ 05 июля 2011

Я бы предложил таблицу для ваших продуктов и таблицу для исторических значений. Возможно, создайте индекс для исторических значений на основе даты, если вы планируете выбирать для определенных периодов времени.

create table products (
 id number primary key,
 sku number,
 name text,
 desc text);

create table values (
 id number primary key,
 product_id number,
 timestamp date,
 value number,
 foreign key fk_prod_price product_id on product.id);

create index idx_price on values.timestamp;

ПРИМЕЧАНИЕ: не фактический sql, вам придется написать свой

1 голос
/ 05 июля 2011

Если вам нравится, как писал @fiver, вам не обязательно иметь таблицу на каждый год.Все в одном столе.И добавьте индексы по sku / date для более быстрого поиска

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...