【问题标题】:SQL Server "pseudo/synthetic" composite Id(key)SQL Server“伪/合成”复合 ID(键)
【发布时间】:2015-10-15 13:04:30
【问题描述】:

抱歉,我不知道如何在标题中调用我需要的内容。

我想创建一个唯一键,其中每两位数字标识其他表 PK。假设我在这 3 个表中有以下 Pks:

Id  Company     Id  Area        Id  Role
1   Abc         1   HR          1   Assistant
2   Xyz         2   Financial   2   Manager
3   Qwe         3   Sales       3   VP

现在我需要在其他表中插入值,我知道我可以在 3 列中执行并创建一个复合键以达到完整性和唯一性,如下所示:

Id_Company  Id_Area Id_Role ...Other_Columns.....
1           2       1
1           1       2
2           2       2
3           3       3

但我正在考虑创建一个列,其中每个 X 数字标识每个 FK。所以上表 3 第一列变成如下(假设 FK 中的每个数字)

Id  ...Other_Columns.....
121
112
222
333

我不知道怎么称呼它,即使它很愚蠢,但对我来说很有意义,我可以在其中选择单个列,如果需要一些连接,我只需将每个 X 位的数字按我的定义。

【问题讨论】:

    标签: primary-key composite-primary-key sql-server-2014-express


    【解决方案1】:

    它被称为"smart", "intelligent" or "concatenated" key。这是个坏主意。它很脆弱,会导致更新问题并阻碍 DBMS。 DBMS 和查询语言旨在让您通过基表以直接的方式描述您的应用程序。 Use them as they were intended.

    【讨论】:

      猜你喜欢
      • 2012-10-21
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 2012-03-07
      • 2011-11-28
      • 2020-04-16
      相关资源
      最近更新 更多