代码之家  ›  专栏  ›  技术社区  ›  Mohamad

设计跟踪订单和愿望清单的数据库的最佳方法是什么?

  •  0
  • Mohamad  · 技术社区  · 15 年前

    描述此场景的最佳方法是使用示例。以Netflix为例:它们是吗 将他们的订单(他们寄出的DVD)从他们的成员列表中存储在一个单独的表中 ,或通过在同一表的同一行中使用附加信息来区分订单?

    对于那些不熟悉Netflix的人来说,想象一下一个服务可以让你创建一个电影的愿望列表。这个愿望清单随后会逐步发送给你,比如说一次两部电影。

    我想使用MySQL数据库实现一个类似的想法,但是我不确定是否创建两个表(一个用于orders,一个用于lists)并将项目从lists表动态移动到orders表(这个过程应该是半自动的,基于返回项目的成员,在发送新项目之前,将检查带有某些控件的表,以查看用户是否仍有资格/未超过其每月限额)。。。

    想法和正反两方面都会很棒!

    编辑

    3 回复  |  直到 15 年前
        1
  •  2
  •   Cᴏʀʏ bcherry    15 年前

    将对象从一个数据库表移动到另一个数据库表以更改其状态是一种糟糕的做法。在RDBMS中,使用主键和外键约束将一个表中的行与其他表中的其他行关联起来。

    至于你的例子,我看到大约四个表只是为了开始。与电影租赁业的老大Netflix相比,这与现实相去甚远。记住这一点。

    1. A 为会员提供住宿的桌子。
    2. 电影
    3. A 愿望清单 在用户和电影之间具有一对多关系的表。

    Movie表中电影的状态可以在另一个表中,在该表中,您将用户与电影关联到MovieStatus或其他内容,这将使表计数变为6。要真正地安排和设计它正确,你可能会结束更多,但希望这类给你一个从哪里开始的想法。

    编辑: 看到你的最新消息了。我以为你是白手起家设计的。你的问题的简单答案是:有两张桌子。愿望清单(或您拥有的会员物品)和订单(会员订单?)我的建议是把它们分开。

        2
  •  2
  •   ChrisW    15 年前

    在members表中存储订单的一个问题是,每个成员的订单数是可变的(0、1或多个)。使用关系数据库的方法是拥有两个单独的表。

        3
  •  1
  •   Petrogad    15 年前

    桌子:

    • 标题
    • 成员
    • 订单

    这样,一个对成员有外键的订单就会有一个透视表,因为许多订单可以有许多标题。

    如果数据库中存在多对多关系,则需要创建透视表:

    Order_Has_Titles:
        ID (auto-inc)
        Order_FkId (int 11)
        Title_FkId (int 11)
    

    这样,你就可以把多个电影分开的每个订单。

    当然,这是简化的,你会有许多其他的组件,这些组件将是它的一部分,但是在一个基本的层次上,你可以在这里看到它。