【问题标题】:Database relationship help (user with varying types and groups)数据库关系帮助(具有不同类型和组的用户)
【发布时间】:2021-07-01 11:49:31
【问题描述】:

如果我们有一个关于啤酒的网站。

  • Users 可能是也可能不是 Brewers
  • 属于BrewersUsers 也可以是Brewery 的一部分。

当前设置:

// made up shorthand TS like syntax to demonstrate
User {
    role: User | Moderator | Admin; // global site permissions
    type: User | Brewer; // did user register as a brewer?
    brewery: Brewery; // reference the Brewery if user is part of one
    breweryRole: Owner | Member; // reference the Brewery Role is user is part of one
}

Brewery {
    owner: User; // reference user who created the Brewery so they always have permissions
    members: [User]; // list of users who belong to this Brewery
}

基本上我们有不同的用户types 以及该用户可能属于的外部groups

我想听听关于这是否是应该使用的模式的反馈。我很想看到这个的替代品。

【问题讨论】:

  • 你的问题是什么?

标签: sql database-design


【解决方案1】:

摆脱Brewery.members

这是多余的,因为您已经拥有 Users.brewery 引用,并且您冒着数据不同步的风险。我的意思是,如果您发现 Brewery.members 列出了用户 1234,但该用户的 Users.brewery 引用了不同的啤酒厂,您怎么知道哪个是正确的会员?

关系数据库规范化的最大优势之一是每个事实只存储一次,因此它不可能不同步或与代表相同信息的其他数据不一致。

【讨论】:

    猜你喜欢
    • 2013-09-06
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    相关资源
    最近更新 更多