数据库设计用户组订单

时间:2014-11-15 10:54:31

标签: database-design

我正在制作一个应用程序,其中超级用户可以接受成员的订单,并且可以创建多个成员的组,这些成员也可以接受订单。

现在我有以下设计:

成员

  • ID(PK)
  • 姓名
  • isGroup

GroupMembers

  • ID(PK)
  • GroupId =也是成员表
  • 中成员的ID
  • memberId(Fk - > members.id)

Oders

  • ID
  • memberid(Fk - > members.id)
  • 产品ID(Fk - > product.id)

还想过:

成员

  • ID(PK)
  • 姓名

  • ID(PK)
  • 姓名

GroupMembers

  • ID(PK)
  • GroupId =(Fk - > Groups.id)
  • memberId(Fk - > members.id)

Oders

  • ID
  • memberid(Fk - > members.id)可以为空的
  • Groupid(Fk - > member.id)可以为空的
  • 产品ID(Fk - > product.id)

哪种设计更好或设计更好?

1 个答案:

答案 0 :(得分:0)

像往常一样 - 这取决于。如果您熟悉面向对象的设计,您可能会发现想到"成员"和"团体"作为对象。组真的是一种成员(继承)吗?会员和团体都有共同的超级类型吗?当您进一步使用数据模型时,成员和组之间是否会有共享属性?

如果"会员"和"组"没有什么比他们可以下订单更常见的了,它可能最好创建单独的表(你的第二个设计)。

如果"会员"和"组"基本上是相同的概念,您可能想尝试以下内容:

实体       ID       名称       EntityTypeID

的EntityType

  EntityTypeID
  Name ("group" or "member")

GroupMembers

ParentEntityId = (Fk -> entity.id)
ChildEntityId(Fk -> entity.id)

订单

id
EntityID    
product id (Fk -> product.id)