2015-07-14 5 views
1

У меня есть простой подарок карта таблицы:Подарочная карта активности таблица (каротаж)

- id (auto incrementing integer) 
- gift_card_number (varchar; unique) 
- value (decimal) 

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

Я имею в виду, для таблицы журнала:

- id (auto incrementing integer) 
- date (Timestamp) 
- giftcard_id (foreign key reference) 
- type (SALE, UPDATE) 
- old_amount (Decimal) 
- new_amount (Decimal) 
- log_message (TEXT) 
- employee_id (person who did updating; foreign key) 

Как вы думаете, это будет соответствовать требованиям? Есть ли лучший способ организовать эти данные?

+0

Что подарит gift_card_table.value (не сказать значение:>) – Drew

+0

Я бы не хранил старую сумму/новую сумму, я бы просто сохранил сумму транзакции и использовал триггер для обновления баланса на карте таблицы. – AdamMc331

+0

В дополнение к тому, что сказал пирс, значение является зарезервированным словом, поэтому постарайтесь не использовать его. То же самое касается даты, так как дата также является типом, это хорошая идея использовать другое имя. – AdamMc331

ответ

2

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

Вы можете удалить «old_amount» и «new_amount» и просто сделать свой «log_message» более подробным (если вы не планируете фильтровать записи журнала на основе значений). Более общая структура таблиц затем может быть реплицирована для регистрации других таблиц, а также может быть представлена ​​с использованием общего интерфейса в вашем приложении.

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

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

То же самое касается «employee_id», вы не указываете, является ли это внешним ключом или нет. Я бы не стал использовать внешний ключ для ведения журналов для удаленных пользователей.

Смежные вопросы