0

我目前有一个包含IDENTITY字段的表。该字段被声明为INT类型。问题是我有一些新的独特价值,但它们不是INT. 它们是字母数字的,所以我不能把它们放在INT现场。我唯一的选择是创建另一列并将它们粘贴在新NON-IDENTITY列中还是有其他选择?上面的示例仅适用于 2 种不同的身份格式,但如果我开始获得更多身份格式怎么办?我不想为每种类型的格式化 alpha(数字)创建一个列。

4

2 回答 2

0

替代方法是:

  1. 使用与旧表完全相同的方案创建一个临时表
  2. 将表的值复制到新的临时表
  3. 丢弃旧表
  4. 根据旧表的方案创建一个新表,但具有文本标识
  5. 将临时表中的数据复制到新创建的带有文本标识的表中
  6. 删除临时表

当然,在此过程中您必须注意有关此表的任何潜在操作。

于 2012-10-08T21:14:56.697 回答
0

一个表包含多个必须是唯一的列的情况并不少见。我认为真正的问题是您在这里要达到什么级别的规范化,是否添加该列支持或破坏您的目标关系规范化级别或您认为可以接受的程度?

例如,考虑到第三个正常和/或著名的“每个非键属性都会揭示关于键、整个键的事实,除了键之外什么都没有......所以帮帮我 Codd ”。

您添加的新唯一值是否添加了有关由键标识的行的事实?

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

于 2012-10-08T21:06:59.400 回答