【问题标题】:Database schema for titles and partner titles标题和合作伙伴标题的数据库架构
【发布时间】:2016-10-17 20:05:05
【问题描述】:

我有一个标准的标题表,结构如下:

TitleId       Title
-----------------------------
7282991         CEO
7282992         CTO
7282993         SSE
7282994         SE
7282995         CFO      

现在我们要求用户可以添加自己的自定义标题以及这些标准标题。所以我创建了一个如下表。

  TitleId       Title     UserId
------------------------------------
7282991         Manager          1
7282992         Team Lead        1
7282993         QA               1
7282994         Admin            2
7282995         FO               2      

现在我面临的问题是我必须在 UI 的下拉列表中显示所有标准标题和用户的自定义标题。为此,我必须在标题的标准表和自定义表之间进行联合操作。此外,当将标题分配给员工时,我必须检查 2 个表中的 titleId 以找到它的标准或自定义标题。

什么是最好的架构,这样它会让我的任务变得简单。

【问题讨论】:

    标签: sql sql-server database-design relational-database database-schema


    【解决方案1】:

    您可以将所有标题保留在同一个表中,只需添加一列来标记非标准标题。

    TitleId       Title       IsStandard 
    

    我还会在 Title 列上添加唯一索引以避免重复值。

    如果关系是多对多的,最终的模型可能是这个图

    【讨论】:

    • 感谢您的关注,但我怎么知道哪个标题属于哪个用户?
    • @ChupChapCharli 如果用户只能有一个标题,那么只需将 TitleId 列添加到您的用户表中。如果否则用户可以有多个标题,请使用具有 UserId 和 TitleId 列的连接表 UserTitles,以及各自的外键
    • 是的,用户可以有多个头衔,但我不能在您建议的上表中添加 UserId 吗?标准情况下它将为空,其他将具有特定的使用价值,而不是从 2 个表中执行.
    • @ChupChapCharli 我已经用图表更新了我的答案,希望你现在明白了。
    • 您忘记在 Title 表中添加 IsStandard 列,因为我必须显示所有标准以及用户特定的标题。请提出建议。
    猜你喜欢
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多