Журнал аудита для продуктов / опций / таблиц Exras? - PullRequest
1 голос
/ 22 июня 2011

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

Иногда сотрудники меняют название продукта, цену, опции или дополнительные функции.Но мы не храним историю того, что было обновлено или удалено .. как справиться с этой ситуацией?

Использовать аудит (таблицу истории) или тип управления версиями?Пожалуйста, приведите пример дизайна моих таблиц.

Продукт содержит один или несколько вариантов.Опция может иметь дополнительные или без дополнительных параметров.

Пример оформления таблиц:

Таблица продуктов:

mysql> select * from products;
+-----------+------------+
| ProductID | Name       |
+-----------+------------+
|         1 | Hard Drive |
+-----------+------------+

Таблица параметров: (Есть два варианта из ProductID 1)

mysql> select * from options;
+----------+-----------+---------+-------+
| OptionID | ProductID | Name    | Price |
+----------+-----------+---------+-------+
|        1 |         1 | Samsung | 55.00 |
|        2 |         1 | Hitachi | 20.00 |
+----------+-----------+---------+-------+

Таблица дополнений: (OptionID 2 имеет два дополнения ... OptionID 1 без Extra)

mysql> select * from extras;
+---------+----------+------------------+--------+
| ExtraID | OptionID | Name             | Price  |
+---------+----------+------------------+--------+
|       1 |        2 | 10 Year Warranty | 100.00 |
|       2 |        2 | 20 Year Warranty | 250.00 |
+---------+----------+------------------+--------+

Если я изменю название продукта (products.name) ...Должны ли опции и дополнительные данные (независимо от того, с каким ProductID связан) автоматически добавляться в таблицу истории или использовать метод контроля версий?

У некоторых продуктов около 20 опций, у каждого - около 10 дополнительных.

У меня более 300 000 строк в таблицах опций и дополнительных функций.

У меня есть таблицы Order и Order_Items. В таблице Order_Items он содержит список OptionID (FK), но я включил имя параметра ... Так что, если я изменю имя параметра (options.Name), тогдазаказ будет выполнен.

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Не думаю, что вы дали нам достаточно информации, чтобы ответить на ваш вопрос.Там, где я работаю, сотрудники меняют данные в базе данных каждый день.Мы сохраняем историю для некоторых таблиц, а не для других.Мы ведем контрольный журнал для некоторых таблиц, а не для других.Для некоторых таблиц мы не храним ни историю, ни контрольный журнал.

Я могу представить себе изменение названия продукта для исправления опечатки.Такие изменения обычно не требуют каких-либо изменений в опциях или дополнениях.

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


Поскольку большинство компаний продают продукты, я думаю, вам следует пересмотреть названия ваших таблиц.Ваша таблица «продукты» больше похожа на категорию продуктов.Ваша таблица «вариантов» больше похожа на продукты.Категории не имеют цены, но продукты имеют.

Вы также спрашивали о заказах.Изменения значений в ваших таблицах "products", "options" и "extras" не должны влиять на предыдущие заказы.Через пять лет вам, возможно, придется обратиться в суд и предоставить копию приказа.Если вам не хватает документов, ваша база данных сможет точно воспроизвести то, за что заплатил клиент, даже если она полна опечаток и неправильных цен.

0 голосов
/ 22 июня 2011

из ваших комментариев. Я бы предложил сделать две вещи.

Добавление таблицы журнала аудита (истории) для ваших таблиц товаров и категорий. Пример здесь Аудит журнала для данных о продуктах?

Для таблицы «Опции» / «Дополнительно» я бы сделал управление версиями, указав дату начала и окончания в каждой строке, чтобы вы могли видеть значение в любой данный момент времени. Хорошее объяснение здесь версия каждого поля против поля даты в истории?

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