关于主键的一般SQL问题

时间:2011-09-13 15:59:18

标签: sql sql-server sql-server-2008 primary-key

我知道这是非常基本的但是在这里。

我想知道您如何知道哪些列是没有主键的表中的主键?是否有技术或其他东西我应该阅读?

提前谢谢

3 个答案:

答案 0 :(得分:4)

您需要查看数据结构。

主键必须

  • 从不为空(无异常
  • 可靠且唯一标识每一行

如果它是

就会有所帮助
  • 小巧且易于使用
  • 稳定(完全不变,或至少不变)
  • 单列(或最多两列)

检查您的数据 - 哪些列或一组列可以满足这些要求?

一旦你拥有了这些潜在的主键(“候选键”) - 想想你将如何访问数据,以及可能需要与这个实体相关联的其他数据 - 什么才有意义键?您想以其名称引用您的部门吗?可能不是一个好主意,因为这个名字可能会拼写错误,它可能会随着时间的推移而改变等等。通过该部门的办公地点?也是不好的选择。但是像一个独特的“部门ID”这样的东西可能是一个好主意。

如果在实际数据中没有找到任何适当的列可以作为主键并且有意义,那么引入“代理键”是一种常见的做法 - 一个额外的列,通常是{{ 1}}(通常类似于“自动增量”INT)将作为每行的人工标识符。如果你这样做,一个常见的最佳做法是永远不要在任何数据屏幕上显示该人工密钥 - 它对你的系统用户没有任何意义 - 所以甚至不要向他们展示。

检查这些要求以及大量经验将帮助您找到正确的主键。

答案 1 :(得分:1)

这实际上取决于数据本身。您需要确定哪些字段可用于唯一地标识记录。

答案 2 :(得分:0)

在SQL服务器中,它旁边会有一个密钥。它通常是ID或带有ID的东西。它也是独特的,通常是增量。当你在SQL中查看它时。在桌面设计下的服务器管理工​​作室,您将看到它与Lil键图标的列列表顶部。

这是一个唯一的标识符,可以解密每个记录。有点像每个人都有一个ssn。