我正在为我的朋友设计一个简单的汽车零件数据库,以了解有关数据库设计的更多信息。我坚持使用ORDER
,ORDERITEM
,SHIPMENT
,PACKING LIST
,INVOICE
和CONTAINER
关系。
ORDER
包含ORDERITEM
,这是个别部分(一个条目的金额可以超过一个)。当全部或部分ORDERITEM
可用时,将发生装运。对于每批货,可以使用多个包装清单。对于每个包装清单,需要一个INVOICE。包装清单将包含一个或多个CONTAINER,每个CONTAINER内至少有一个ORDERITEM。
我不知道将数据拆分成上表是否是一个好主意,将它们连接在一起的更好方法是什么?
以下是我的数据库设计草案:http://www.flickr.com/photos/oldyoungguy88/3595283724/sizes/o/
有两个部分。一个是'库存'的PARTS表,一个是'文件'的CUSTOMER,ORDERS,INVOICES,SHIPMENTS表。
答案 0 :(得分:1)
你所说的是标准化,你需要做的是外键。 Wikipedia article on Foreign Keys这是一种很好的方法,可以帮助您在数据库中有效地组织事物。
关于数据库规范化over here,还有一篇非常好的文章,似乎比我能做的更好。下面是我描述你想要做的事情。
如果您有一对多关系,则这些项目可以存储在不同的表格中。假设我们有以下ORDERTABKE。我已经为ORDERTABLE添加了一个主键,因此我为表中的每一行都有一个不同的标识符。 Wikipedia article on Primary Keys
OrderID - Primary Key
OrderDate
OrderStatus
etc...
您的OrderItems表可能看起来像
OrderItemID - Primary Key
OrderID - Foreign Key
PartDescription
Qty
ORDERITEM表链接到ORDERTABKE,因为它具有父行的OrderID的外键。因此,每个OrderTable都可以有一个或多个链接到它的OrderItem。您甚至可以将零件放在自己的表格中,例如PARTS。这样,您只需存储一次零件描述,就可以使您的OderItem表尽可能简单。
另外,仅仅因为表有外键,并不意味着它不能拥有另一个表通过它的外键引用的主键。它也可能会因为规范化而变得疯狂,因为它很难编写代码。当你应该而且不应该规范化你的数据时,你会通过反复试验来学习。
我建议阅读有关数据库设计和规范化的一些参考资料。关于这个主题有很多书。试着找到一个更注重实际例子,然后是你为什么要这样做的理论。
我希望这会有所帮助。