我对数据库设计很陌生,对最佳实践有一些疑问,我真的很想学习.我正在设计一个数据库模式,我对需求有一个很好的了解,现在需要将它变成黑白.
在这个伪数据库布局中,我有一个客户表,订单表和产品表.
TBL_PRODUCTS:
ID
描述
详细信息
TBL_CUSTOMER:
ID
名称
地址
TBL_ORDER:
ID
TBL_CUSTOMER.ID
PROD1
Prod2的
prod3
等
每个"订单"只有一个客户,但可以包含任意数量的"产品".
问题是,在我的情况下,给定订单的产品可以是任何数量(单个订单数百个),订单的每个产品需要的不仅仅是"数量",而是可以具有跨页面的值特定订单的特定产品的文本.我的问题是,我该如何存储这些信息?
假设我不能将可变长度数组存储为单个字段值,另一个选项是使某个字符串以某种方式分隔并按应用程序中的代码分割.订单可以说100个产品,每个产品只有一个小的int,或5000个字符或自由文本(或介于两者之间的任何东西),仅对该订单是唯一的.
最重要的是,每个订单都必须拥有自己的审计跟踪,因为在整个生命周期中可能会发生许多事情.审计跟踪将包含通常的信息 - 用户,时间/日期,操作,可以是任何长度.在创建订单时,我是否会在其自己的表中存储特定订单的审计跟踪(因为它们可能会变得非常冗长)?
有什么地方我可以了解更多关于数据库设计的技术吗?
最常见的方法是将订单商品存储在另一个表中.
TBL_ORDER: ID TBL_CUSTOMER.ID TBL_ORDER_ITEM: ID TBL_ORDER.ID TBL_PRODUCTS.ID Quantity UniqueDetails
这同样适用于您的订单审计跟踪.它可以是一个新表,如
TBL_ORDER_AUDIT: ID TBL_ORDER.ID AuditDetails