数据库的主键和外键有什么区别

数据库的主键和外键有什么区别,第1张

主键是定义一个表中起主要作用的数据项,这些数据项的数据在表中是唯一的,同时系统按主键为表建立索引。\x0d\\x0d\外键是定义一个表中的某数据项的数据,要参照另一个表的主键数据。既没有在另一个表的主键数据中出现的数据,不允许在这个表的外键数据项中出现。\x0d\\x0d\主键:表中记录的唯一标识\x0d\\x0d\外键:依赖于别的表的数据\x0d\\x0d\唯一键:在表中唯一\x0d\\x0d\键是一个或多个字段的组合\x0d\\x0d\唯一键:可以确定一条记录的字段(或字段组合),一张表可以有多个唯一键,正如可以识别你的身份的可以是身份z,学生证,军人证\x0d\\x0d\主键:你把唯一键的一个选做主键,一张表只能有一个主键\x0d\\x0d\外键:所定义的外键是另一张表的主键,\x0d\\x0d\主键:表中记录的唯一标识,外键:依赖于别的表的数据,唯一键:在表中唯一。\x0d\\x0d\主键和唯一键的一个区别:主键是不允许为NULL的,唯一键则可以,当然你可以加上NOT NULL来限制它\x0d\\x0d\主键:能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键。一个主键是唯一识别一个表的每一行记录,但这只是其作用的一疗分,主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录,主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。\x0d\\x0d\外键:\x0d\\x0d\若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。\x0d\\x0d\A为基本表,B为信息表。\x0d\\x0d\在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通,而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段取值不能相同,也不能是空白的,通过这个字段中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份z号是每个人都不同的,所以可以根据它来区别不同的人,数据库的表中作为主键的段段就要像人的身份z号一样,必须是每个记录的值都不同,这才能根据主键的值来确定不同的记录。\x0d\\x0d\什么是外键?\x0d\\x0d\说明你的表A中的某项a,是引用表B的某列b\x0d\\x0d\为什么要使用外键?\x0d\RDBMS的基本概念,可以维护数据库的完整。\x0d\\x0d\如何来用,涉及到数据库的定义。\x0d\\x0d\唯一约束和主键的区别是什么?\x0d\\x0d\唯一性约束\x0d\\x0d\唯一性约束所在的列允许空值,但是主键约束的列不允空值。\x0d\\x0d\可以把唯一约束放在一个或者多个列上,但是,唯一性约束所在的列并不是表的主键列。\x0d\\x0d\唯一性约束强制在指定的列上创建一个唯一性索引,在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。\x0d\\x0d\主键:\x0d\\x0d\用于标识某行而且与之相关\x0d\\x0d\是不可能更新\x0d\\x0d\不应该允许空\x0d\\x0d\唯一域/字段\x0d\\x0d\用于作为访问某行的可选手段。\x0d\\x0d\只要唯一就可以更新\x0d\\x0d\可以为空\x0d\\x0d\注意唯一和主键的区别,它们都是创建一个唯一的索引,一个表格仅含有一个主键约束列,但是,它有可能在其他列中含有许多的唯一约束。

你要加个外键,VIsio会自动帮你添加的。你添加两个有关联的表,然后把两个表用“关系”(Relationship)连接起来(连接的时候拖线的一段到要链接的表,表框框变红了,就算是连接上了)。如果两个表有相同名字的列,会自动生成外键,就是你要的那个FK,如果没有自动生成,你就点那个“关系”(Relationship)那条线下面设置的地方你可以设置两个表关联。把关联的两个Column点上,然后点中间那个按钮,就自动连接了生成FK了

加了张图,应该就会出现这个样子,就算成功了。

还有3个小时……也不知道你看不看的到这个答案……

Anyway, Good Luck。希望能帮到你

主键就是你表格里主要属性链接另一个表格的属性,而那个属性就是外键,比如,你2号的图,第一个表借出编号为主键,用第一个表链接第二个表,那么共同属性石学生编号,也就是说第二个表的学生编号是为主键链接第一个表的学生编号属性,那么第一个表的学生编号就是外键。4个表之间的关系,就要靠你慢慢设计了,最好画图来慢慢试为好

定义:外键是相对于主键说的,是建立表之间联系的必须的前提。

例如:

这里有两张,user(用户)表和qx(权限)表,user中gid是用户权限id,而gid是依赖于qx中的id。那么qx中的id就是user的外键。

也就是当我们给gid创建一个外键,这个外键就是qx中的id时,gid就必须与qx中id一致,我们可以通过外键使两张表进行关联。

那么创建外键的作用是什么?

1可以使得两张表关联,保证数据的一致性和实现一些级联 *** 作。

2保持数据一致性,完整性。

主要目的是控制存储在外键表中的数据。使两张表形成关联,外键只能引用外表中的列的值!可以使得两张表关联,保证数据的一致性和实现一些级联 *** 作。

数据库设计是否需要外键?

这里有两个问题:

1如何保证数据库数据的完整性和一致性。

2第一条对性能的影响。

正方观点

1由数据库自身保证数据一致性,完整性,更可靠,因为程序很难100%保证数据的完整性。

而用外键即使在数据库服务器当机或者出现其他问题的时候,也能够最大限度的保证数据的一致性和完整性。

注意:数据库和应用是一对多的关系,A应用会维护他那部分数据的完整性,系统一变大时,增加了B应用,A和B两个应用也许是不同的开发团队来做的。他们如何协调保证数据的完整性,而且一年以后如果又增加了C应用呢?

2有主外键的数据库设计可以增加ER图的可读性,这点在数据库设计时非常重要。

3外键在一定程度上说明的业务逻辑,会使设计周到具体全面。

反方观点

1可以用触发器或应用程序保证数据的完整性

2过分强调或者说使用主键/外键会平添开发难度,导致表过多等问题

3不用外键时数据管理简单, *** 作方便,性能高。

(导入导出等 *** 作,在insert,update, delete 数据的时候更快)

注意:在海量的数据库中想都不要去想外键,试想,一个程序每天要insert数百万条记录,当存在外键约束的时候,每次要去扫描此记录是否合格,一般还不 止一个字段有外键,这样扫描的数量是成级数的增长!我的一个程序入库在3个小时做完,如果加上外键,需要28个小时!

总结

1在大型系统中(性能要求不高,安全要求高),使用外键;在大型系统中(性能要求高,安全自己控制)不用外键;小系统随便,最好用外键。

2用外键要适当,不能过分追求

3用程序控制数据一致

以上就是关于数据库的主键和外键有什么区别全部的内容,包括:数据库的主键和外键有什么区别、怎样用visio画数据库模型图、数据库中主键、外键和规范到第几范式该如何做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10168818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存