Избегайте дублирования полей в нескольких таблицах - PullRequest
0 голосов
/ 28 сентября 2018

Позвольте мне кратко описать структуры таблиц:

Таблица клиентов

id | name | address_line_one | address_line_two | contact_no_one

Таблица SaleInvoice

id | id_Customer (Foreign Key) | invoice_no

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

Означает ли это, что я должен создать

name_customer

address_line_one_customer

...

ивсе эти поля в таблице счетов на продажу тоже?

Если да, есть ли лучший способ получить данные из этих полей в таблице Customer в таблицу счетов-фактур продажи, а затем написать SQL-запрос для получения значений и затем установить значения?

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Звучит так, как будто проблему легко решить, поместив таблицу Employee в обычную версию (VNF).На самом деле это всего лишь разновидность 2nf, но она выполнена таким образом, что дает возможность запрашивать текущие и прошлые данные, используя один и тот же запрос.

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

Краткое описание деталей можно найти здесь .Этот ответ также содержит ссылки на дополнительную информацию, если вы считаете, что это то, что вам подходит.

0 голосов
/ 28 сентября 2018

Это действительно зависит от вас.В некоторых случаях, когда это юридический документ, вы сохраняете все детали, чтобы вы всегда могли поднять его так, как он был создан.В качестве альтернативы, если вы создаете счета в формате PDF, сохраните их на 100%.

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

Это зависит от вариантов использования, но это ваши основные варианты.

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