×

外键

数据库中的外键是什么意思?什么是主键与外键

admin admin 发表于2023-10-15 17:54:17 浏览34 评论0

抢沙发发表评论

本文目录

数据库中的外键是什么意思

外键也称为外码或外部关键字。如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字。 在关系数据库中可以通过外键使两个关系关联,这种联系通常是一对多的,其中主关系称为被参照关系,从关系称为参照关系。

什么是主键与外键

1、主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。

2、外键:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

扩展资料:

主关键字的作用

1、保证实体的完整性;

2、加快数据库的操作速度;

3、在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;

4、ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

参考资料来源:百度百科-外键

参考资料来源:百度百科-主关键字

外键的作用

数据库中外键的作用。多多了解这方面的内容,对建立数据库影响还是相当大的,我们应该好好的学习他了解他才能更好的掌握的。外键 (FK) 是用于建立和加强两个表数据之间的链接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接。这个列就成为第二个表的外键。 FOREIGN KEY 约束的主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。例如,如果在 publishers 表中删除一个出版商,而这个出版商的 ID 在 titles 表中记录书的信息时使用了,则这两个表之间关联的完整性将被破坏,titles 表中该出版商的书籍因为与 publishers 表中的数据没有链接而变得孤立了。FOREIGN KEY 约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改是不能实现的,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的 FOREIGN KEY 约束值相关,则该操作不可实现。若要成功更改或删除 FOREIGN KEY 约束的行,可以先在外键表中删除外键数据或更改外键数据,然后将外键链接到不同的主键数据上去。 外键只能引用外表中的列的值! 外键的作用: 保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。 使两张表形成关联,就是当你对一个表的数据进行操作,和他有关联的一个或更多表的数据能够同时发生改变。 例如一: a b 两个表 a表中存有客户号,客户名称 b表中存有每个客户的订单 有了外键后 你只能在确信b 表中没有客户x的订单后,才可以在a表中删除客户x。例如二: 例如有两个表 A(a,b) :a为主键,b为外键(来自于B.b) B(b,c,d) :b为主键 如果我把字段b的外键属性去掉,对编程没什么影响。 如上面,A中的b要么为空,要么是在B的b中存在的值,有外键的时候,数据库会自动帮你检查A的b是否在B的b中存在。 1、外建表达的是参照完整性:这是数据固有的,与程序无关。因此,应该交给DBMS来做。 2、使用外建,简单直观,可以直接在数据模型中体现,无论是设计、维护等回有很大的好处,特别是对于分析现有的数据库的好处时非常明显的--前不久我分析了一个企业现有的数据库,里面的参照完整性约束有的是外键描述,有的是用触发器实现,感觉很明显。当然,文档里可能有,但是也可能不全,但是外键就非常明显和直观。 3、既然我们可以用触发器或程序完成的这个工作(指参照完整性约束),DBMS已经提供了手段,为什么我们要自己去做?而且我们做的应该说没有RDBMS做得好。实际上,早期的RDBMS并没有外键,现在都有了,我认为数据库厂商增加这个功能是有道理的。从这个角度来说,外键更方便。 4、关于方便,根据我带项目的情况来看,程序员确实有反映,主要是在调试时输入数据麻烦:如果数据可以违反参照完整性,那么就是说参照完整性本身就不对名誉业务冲突,此时也不应该用触发期货程序实现;否则,说明数据是错误的,根本就不应该进入数据库!而且,这也应该是测试系统的一个内容:阻止非法数据。实际上,前台程序应该对这种提交失败做出处理。数据是企业的而非程序的,储程序要尽量与数据分离,反之亦然。

mysql怎么设置外键

通过工具NAVICAT 设计表时进行设计

  1. 打开NAVICAT,连接数据库

  2. 右键目标表,选择设计表

  3. 打开后选择外键菜单,具体如图:

  4. 分别设置外键名,字段,关联数据库、表、字段,以及删除时操作,更新时操作方式然后点击保存按钮即可

  5. 也可以通过SQL方式完成对表外键的添加,如:

    语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

数据库中主键约束和外键约束的数据长度必须一致吗

不是必须一致。1.1删除主键约束:alter table 表名 drop primary key;1.2针对已经存在的表增加联合主键:alter table 表名 add constraint 主键约束的名字 primary key(列名1,列名2);#未存在的表直接加在列后2、唯一约束:unique特征:1.唯一约束修饰的列,不允许有重复的值,但是可以有空值;2.一个表中可以有多个唯一约束;3.唯一约束默认情况下,约束名字和列名是一样的;4.具有唯一约束的列,系统会自动给它分配一个唯一索引。****增加唯一约束:alter table 表名 add unique(列名);2.1删除唯一约束格式:alter table 表名 drop index 唯一约束的名字;3、默认约束:default 一个表可以有多个格式:default ‘值’针对存在表,增加默认约束alter table 表名 modify 列名 数据类型 default ’值’;3、1删除默认约束alter table 表名 modify 列名 数据类型;4、非空约束 not null 可以有多个表增加alter table 表名 modify 列名 数据类型 not null;4、1删除非空约束alter table 表名 modify 列名 数据类型;外键约束: foreign key 可以有多个 ,从表参照主表,主表也参照从表,可以列名不一样但是数据类型和内容必须一样。增加外键约束alter table 从表 add constraint 外键名 foreign key (从表列名) references 主表(主表列名);5.删除外键约束

请问下在sql server中,我创建约束的时候没有定义约束名,它默认的约束名是什么呀

如果不指定的话,默认约束名是 约束简写_表名 主键(Primary Key)约束:如 PK_表名唯一(Unique Key)约束:如 UQ_表名默认(Default Key)约束:如 DF_表名检查(Check Key)约束:如 CK_表名外键(Foreign Key)约束:如 FK_表名 例如表名是TEST 那相应的默认约束名称 为 XX_表名

外键是什么

外键是该表是另一个表之间联接的字段(外键必须为另一个表中的主键)外键的用途是确保数据的完整性。它通常包括以下几种:实体完整性,确保每个实体是唯一的(通过主键来实施)域完整性,确保属性值只从一套特定可选的集合里选择关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值 如果你在没有定义数据库的实际外键的情况,试图强制执行关联完整性,那你就会遇到数据库“断列链接”或“孤单记录”的风险。换句话说,数据的完整性会被破坏,你的数据库会含有不良数据,你的用户会很生气(或更糟)。 你从来不能肯定你的前台程序是更改数据库数据的唯一手段。那是太危险了。此外,你在已经建好的数据库上花费不必要及大量的时间和精力来生成逻辑。你在没有合理理由的情况下再发明轮子。 从来不存在“太多的”外键。 或者是业务需求需要的, 或者不需要。如果需要(例如,确保每个定单归属于一个已知的客户),那你必须实施它们。性能不是问题。不进行外键检查,你的查寻可能会快几微微秒,但如果数据库包含不良数据,你的用户会容忍这样的情况持续多久呢?比如在员工信息表中有部门的编号,部门的信息在另外一个表中,在部门信息表中这个部门编号必须是存在的或者为空,而不能是一个不存在的部门编号。这个就可以使用外键来限制员工信息表的部门编号的外键为部门信息表的部门编号,这样Oralce就可以自动完成员工信息表中的部门编号必须存在了。

什么是外键,它有什么功能

外键是相对于主键说的,是建立表之间 的联系的必须的前提。 比如:学生表 、学生成绩表一一对应是因为 他们都具有相同的字段:学号,把学生表作为主表,学号是他的主键,相对于主表来说,学生成绩的字段 学号就是学生表的外键。 没有外键,两个表就没办法建立联系啊!