我正在设计我的第一个MySQL数据库,这里的想法是我们的订单可以包含多个不同的项目。 所以我决定将所有相关信息存储在一个表中,将项目存储在另一个表中,然后创建第三个表,其中存储每个订购的项目。当然,每当我需要列出订单时,我首先必须找到每个OrderedItemsID,其订单ID与我需要的订单ID相同,并且与项目匹配。
既然这是我的第一个数据库设计,我并不自觉地认为它是一个很好的解决方案,所以我想知道是否有人知道这类问题的好解决方案? 感谢
图片位于http://img211.imageshack.us/img211/5575/stackoverflowq.png
答案 0 :(得分:4)
这个解决方案很好,但是在订单表中我会列出总价,税和运费。这样您就不必转到OrderItems表来获取总数。
另外,您需要将项目中的所有内容存储到orderitem表中。这将包括名称和描述。原因在于问责制。如果有人更改了表格中某个项目的名称,那么这将基本上改变它以便收到任何人的收据。而你不想这样做。
基本上说,订单表中的所有信息都不需要依赖于实际的项目表。
您还可以进一步添加结算和送货地址,以便用户以后更改此功能时,不会更改此特定订单。
答案 1 :(得分:0)
不,设计足够好。除了Item可能没有相关的OrderedItem。 (例如,目录中放置的全新商品可能尚未订购)同样适用于订单(例如已下订单,但客户尚未确定订单的详细信息),但不太可能。
答案 2 :(得分:0)
顺便说一句,对我来说看起来还不错,你也可以将你的表与名为Northwind的示例数据库进行比较,后者随MS Office一起提供,也可以从互联网上轻松下载。 http://www.learn-sql-tutorial.com/Images/relationships.gif