我创建了一个表名customers
,其中包含以下列:
Id,
CustomerId,
CustomerName,
Phone,
Address
在我的方案中,CustomerId
是主键,但CustomerId
中的值不是有序的。
我看到很多人使用自动递增的' Id
'作为主键,但在我的情况下,它不会是它,它将毫无用处。
' Id
'每个表中必需的列(自动递增)?
答案 0 :(得分:1)
Id列(自动增量与否)通常用于区分它们之间的行。换句话说,在许多情况下,它可以用作主键。
如果你想在它们之间建立关系并构造内连接等,它也可以用作其他表的外键。
答案 1 :(得分:1)
你读得很好,但是在第2列第1列中你错了的是自动递增而第二列是主要的。
通常,根据数据库创建标准或数据库的规范化形式,您必须使用主键列创建自动增量ID,该列用作另一个表的引用。
因此不需要2列,只使用一个具有适当名称和功能/角色的列。永远不要创建你从未使用的额外列。
这是一篇很好的文章,供您对主键的基本了解。
http://www.w3schools.com/sql/sql_primarykey.asp
此链接显示了我们需要主键的原因: -
主键约束是一种约定,表示声明的列(或列列表)构成键。(非常好的文章)参考下面的链接。
https://in.answers.yahoo.com/question/index?qid=20090905225547AAAK6Ul
答案 2 :(得分:1)
由于CustomerID
是您的主键,因此可能会删除ID列。自动增量柱通常用作"代理键"如果您没有简单的密钥(或者您没有密钥)。因此,您可以创建一个自动增量列并将其设置为主键,主要是因为聚类索引是表必须具有的。在几乎任何情况下,拥有堆表可能被认为是一种不好的做法。
答案 3 :(得分:0)
你认为它没用,但它经常有。
Id
字段用于检索使其唯一的列的列。它可以是任何列(您甚至可以使用Name
),但Id是每个人都使用的约定。
这种列称为“主键”。顾名思义:它是识别行的主要方式。
示例:
如果
PostalCode
,HouseNumber
和Country
同时使Address
行唯一,该怎么办?如何检索特定行的引用?通过在查询中指定三列,或者只使用Id
。此外,如果更改三列中的任何一列,您的引用将变为无效。Id
始终保持不变。
答案 4 :(得分:0)
CustomerId
是PK,因此它也是唯一的,在这种情况下,系统生成的另一个唯一ID不需要创建唯一的行ID。您可能仍希望出于性能原因创建它:小型数据类型可以在同一索引页上存储更多索引,这意味着更快的搜索时间。在这种情况下,如果CLUSTERED UNIQUE INDEX
的数据类型较小,您可以在ID
行创建NON CLUSTERED PRIMARY KEY
,在CustomerID
列创建ID
。
表中数据的顺序是没有问题的,从不对表自己进行排序,事实并非如此。数据按查询中的ORDER BY子句的顺序排序。