我想保留客户的订单记录。
我在考虑保留产品名称,订购产品数量,产品价格,订购日期,名称,地址等
表可以是order_history,会有id,date,cutomer_id,...的字段。
然后我想到了一个关于产品名称和数量的问题。
我应该如何将它们保存在数据库中?
客户可以订购多个不同数量的产品。
我应该将它保存在数组中的一个字段中,例如{product1,2,product2,1,product3,2 etc}
或者我应该单独保留姓名和号码?
还是其他任何方式?
通常的做法是什么?
请问您能建议一个合适的数据库结构吗?
答案 0 :(得分:8)
我会看看像这样的表格结构
TABLE Products
ProductID INT
ProductName VARCHAR(50)
ProductDescription VARCHAR(100)
ProductCategory INT
TABLE ProductCategories
ProductCategoryID INT
ProductCategory VARCHAR(50)
ProductCategoryDescription VARCHAR(100)
TABLE Customers
CustomerID INT
CustomerLastname VARCHAR(50)
CustomerFirstName VARCHAR(50)
PhoneNumber VARCHAR(20)
FaxNumber VARCHAR(20)
CellNumber VARCHAR(20)
Email VARCHAR(50)
TABLE Orders
OrderID INT
CustomerID INT
OrderDate DATETIME
DeliveryDate DATETIME
PaymentDate DATETIME
TABLE OrderItems
OrderItemID INT
OrderID INT
ProductID INT
Quantity FLOAT
Price FLOAT
Discount FLOAT
您可以在此处给出的结构中添加更多详细信息,也可以在 Products 表中添加更多详细信息,以提供具体说明或项目编号。 ProductCategories 或任何其他表也是如此。
答案 1 :(得分:1)
您绝对应该将产品名称放在订单商品表中 - 因为随着时间的推移,产品将被重命名并最终被删除 - 您将需要记住订购时所调用的商品。任何其他类似的细节(制造商代码,SKU等)也需要保存在那里(当然还有您销售的价格)
答案 2 :(得分:0)
您的数据库结构可能是这样的:
customer: id,and all information about the customer.
product: id,barcode,and all information about the product
factor: id,customer_id,date,delivery-date,ship-date,payment_type...
orders: factor_id,product_id,count,description
记住:在设计数据库时,必须在表中重复NO String,在这种情况下,你必须在该表中创建一个新表并存储字符串,然后在表中使用新表id而不是字符串。
答案 3 :(得分:0)
SQL CDC是SQL Server 2008上的一个很棒的工具/框架,用于保存数据的历史记录和审计,而无需太多的手工操作 - 请看一看 SQL Server history table - populate through SP or Trigger?