如何改进此数据库模型?

时间:2011-07-30 14:02:46

标签: sql sql-server relational-database entity-relationship visio

我正在尝试为客户设计DVD销售和DVD租赁的关系。虽然我不认为我的转换表是正确的。如果有人能让我知道我是否朝着正确的方向前进,那么设计会很棒。

Relationship Model

3 个答案:

答案 0 :(得分:5)

以下是一种设计方法。

我不是数据库专家。我为几乎没有表的小型应用程序设计了数据库。我尝试 (强调尝试,有时我没有)尽可能更通用,所以当范围发生变化时,我不会局限于某个角落。

  1. 在你的图表中,我注意到一些事情,例如你只卖DVD的假设。如果店主开始销售蓝光光盘或便携式游戏机,会发生什么。我的建议是保持设计的通用性。所以我将DVD表改为Item,以便表可以容纳任何东西。

  2. 我还添加了项目类型表,以便您可以定义项目的类型。

  3. 您的交易应被视为单个订单。客户可以下单,可以包含他们想要购买的一组商品,也可以包含他们想要租用的商品。你不会要求他们刷卡两次,不是吗?而是在订单标题中为客户创建订单,并将其订单项放在订单明细表中。订单明细表还将指定数量,例如客户想要购买/租用的商品数量。租用时,返回日期字段开头为空。当他们退回商品时,您可以通过搜索商品ID和客户ID组合返回并填写日期。

  4. 你可以用 n 多种方式进行设计,但信息有限,这就是我能想到的。

    我并不是说这是最好的设计。我希望这能让你有一些想法从这里拿出它并根据你的需要进行微调..

    Database_design

答案 1 :(得分:2)

许多零售数据库将每种类型的交易(“哈利波特的销售”,“哈利波特的租赁”)模型化为同一表格中的不同行。因此,您将拥有“TransactionType”,然后您可以拥有Customer-> Transaction-> LineItem(交易实例) - > TransactionType。

答案 2 :(得分:1)

我会将所有交易信息放在一个表中。某些字段可能不会被使用,具体取决于交易类型(P Purchase,R Rental),但那又如何呢?磁盘空间很便宜。通过减少表格,代码将更简单,运行速度更快。