如何在表中容纳不同类型的唯一标识符?

时间:2012-10-08 21:00:57

标签: sql-server-2008 database-design

我目前有一个包含IDENTITY字段的表格。该字段声明为INT类型。问题是我有一些新的唯一值,但它们不是INT。它们是字母数字,因此我无法将它们放在INT字段中。我唯一的选择是创建另一个列并将其粘贴到新的NON-IDENTITY列中,还是有其他选择?以上示例仅适用于2种不同的身份格式,但如果我开始获得更多内容呢?我不想为每种格式化的alpha(数字)创建一个列。

2 个答案:

答案 0 :(得分:0)

一个表有多个列也必须是唯一的并不罕见。我认为真正的问题是你在这里拍摄的标准化程度如何,是否增加了列支持或打破了目标关系规范化水平或你认为可接受的水平?

例如,考虑到第3个普通和/或着名的“每个非关键属性将揭示关于密钥,整个密钥的事实,除了密钥...... 所以帮助我Codd ”。

您要添加的新唯一值是否会添加关于键标识的行的事实?

此外,主键通常是聚簇索引,但并非必须如此。您还可以在同一个表上设置其他唯一索引,这在上下文中被视为“正常” “你想要完成什么”并进行优化。

答案 1 :(得分:0)

替代方案是:

  1. 使用与旧表完全相同的方案创建临时表
  2. 将表的值复制到新的临时表
  3. 放下旧桌子
  4. 根据旧表的方案创建一个新表,但具有文本标识
  5. 将数据从临时表复制到新创建的具有文本标识的表
  6. 删除临时表
  7. 当然,您必须注意在此过程中有关此表的任何可能行动。