我可以将标识列(非 PK)添加到表中以在应用程序中使用吗?



我正在sql服务器中构建一个数据库,然后我将构建Web应用程序。 数据有一些非常好的自然键列,我将用作PK。但是,其中一些是组合键,在应用程序端会有点笨拙。

例如,一个高尔夫球场可以在一个位置有 1、2 或 3 个球场。 该位置有一个数字(32201(,每个课程都有一个名称(河口前,河口后,河口执行(,所以我会用数字和名称制作一个组合键。

但是,在应用程序(asp mvc(中,内部路由允许将单个整数ID从控制器传递到视图等,以用于识别内容。 因此,我正在考虑在高尔夫球场表中添加一个非键标识列,以及其他类似的列,以便我可以在应用程序中提交标识。 因此,有人可以在应用程序的索引页面上选择河口回程,我会将非密钥标识 ID 号传递给控制器,以从数据库中选择课程的详细信息并将其传递给视图。

起初,似乎我会通过使用这个非键整数来绕过主键的目的,但是在进行更新、插入等时,PK 会发挥作用,例如引用完整性。

思潮?

你说的听起来像是代理键(而不是自然键(。使用每种方法都有优点和缺点,我认为这两种方法之前已经讨论过,相当广泛。

从这里的答案来看:继续使用两者。它们都是工具,当它是最适合工作的工具时,应该使用它们。

对于您的情况,我唯一要补充的是,由于您的表在同一表上同时具有代理项和自然键,因此请确保一个(自然键或代理键(是实际的PK,另一个具有唯一的键或索引。这样,任何一个都可用于唯一标识表中的行。

最新更新