Я работаю над типом приложения для управления запасами, используя следующую смесь или технологии: MySql, C #, WPF, ADO.Net EntityFramework 4.
Я немного озадачен тем, как мне хранить данные о счетах на продажу / покупку в базе данных.
Вот как у меня это было раньше ... Я сохранил детали в поле LongText в виде строки XML.
+---------------------------------------------------+
| SalesInvoices |
+---------------------------------------------------+
| int InvoiceID: primary key, auto-incretement |
| int OrderID |
| int CustomerID |
| int CreatedByEmployeeID |
| DateTime Date |
| DateTime? ShippingDate |
| LongText ItemsData (details, stored as XML) |
| LongText TransactionData (details, stored as XML) |
| Double Subtotal |
| Double Tax |
| Double Freight |
| Double FreightTax |
| Double Total |
+---------------------------------------------------+
Однако я посмотрел в Интернете, и большинство примеров, которые я видел, имеют отдельную таблицу SalesInvoiceDetails
. Так что мне интересно, есть ли что-то не так с моим подходом, если я пойду через проблему перехода на подход.
Мои требования: Поиск в таблице SalesInvoice
должен быть очень быстрым. Мне не нужно искать в деталях счета, если пользователь фактически не открывает счет, так что все в порядке, если пользователь должен подождать секунду или две здесь.
Причина, по которой я выбрал свой подход в первый раз, заключалась в том, что я думал, что миллионы деталей в одной таблице в конечном итоге замедлят ее открытие, и мне придется беспокоиться об удалении и обновлении строк, если пользователь решит вернуться к изменению что-то. И я подумал, что было бы немного хлопотно иметь подпункты для линий деталей, сохранять их в виде строк, отслеживать отношения родитель / потомок и т. Д.
Так что да, мне интересно, есть ли веская причина, почему я должен отказаться от своего подхода и составить другую таблицу для деталей.