扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:ZDNet China 2006年10月8日
关键字: 关系数据库 SQL Server
在讨论之前,我们将定义一下主键(primary key)一词。一个主键是唯一识别一个表的每一记录,但这只是其作用的一部分,主键的主要作用是将记录和存放在其他表中的数据进行关联。在这一点上,主键是不同表中各记录之间的简单指针。所以,主键的值对用户而言是没有什么意义,并且和它要赋予的值也没有什么特别的联系。
当从每一表中选择一个主键时,开发人员必须遵循以下的几条规则:
请注意到,以上列表中的“必须”不是“可能”或者“绝大多数情况下” ——“必须”是绝对的,但这并不意味着你不能打破这一规则。如果你要打破这一规则,只是意味着你的程序不能和关系数据库进行连接。对于关系数据库模型、主键、标准化等方面的更多的信息,请访问以下的网站:
现在让我们看看自然键如何违反以上的规则。为了执行关系数据库规则,一个表不能包含多个记录,这就意味着一个属性必须也只能唯一的识别一个记录。假设一个表存放职工信息,包括职工的名字,出生日期,社会保险号,以及雇用的日期。对于每一个职工都只有一个记录与之对应。
最初的,职工名字是自然主键最合适的候选,但是让我们作深入的研究。在开始建立数据库时,你不能等到知道职工名字才建立一个记录,因为自然主键不能为空。所以,只有知道职工的正确名字后,你才能输入职工的所有信息。
主键允许包含多个域,所以单独的存储姓和名都不是问题。然而,一个公司的职工名字可能有相同的,这一方法即不成立。只要公司里有相同名字,主键就会扩展为至少有三个域,这样你会发觉违反了规则。
现在让我们把以上的例子复杂化。假设你输入的名字有错误。起初,这看起来并不是一个很重要的错误,你只要修改错误的值就可以了。但是请注意,你是不允许修改主键的值。而且这样做也通常会破坏程序的完整性。可以这样,可以更新主键的值,数据引擎即会自动的更新相关的值,但这一方法对于一个新手显然是不合适的。
在我们的范例中,修正一个拼写错误的名字也不会有太多的反应。但如果主键与一个购买顺序号相关联,当主键的输入值有错误时,相关联的购买顺序号的值也会出现混乱,这对程序的完整性有很大的影响。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者