数据库中外键的概念及作用是什么

数据库中外键的概念及作用是什么,第1张

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

外键的作用就是可以让表B是来自表A中,也就是保证了数据的规范性;如果要删除A表中的某个数据,那么首先要删除B表中同样的数据,这保证了数据的完整。

数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。

简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等 *** 作。

在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。

严格来说,数据库是长期储存在计算机内、有组织的、可共享的数据集合。数据库中的数据指的是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。

这种数据集合具有如下特点:尽可能不重复,以最优方式为某个特定组织的多种应用服务,其数据结构独立于使用它的应用程序,对数据的增、删、改、查由统一软件进行管理和控制。

主外键的存在是依托两个实体之间的关系而存在的;

比如班级与学生的关系:

一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;

那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢?

因为,你想一想班级表内如果放学生那么记录可能就是这样:

1班ID 1班 xx同学id

1班ID 1班 xx同学id

这是不允许的,班级表内班级为主键,是唯一的不允许相同记录的;

下面简单给你讲下大概建成的表结构

--建班级表

create table class(

classid int primary key,--定义班级ID为主键

classname varchar(15)

)

--建学生表

create table students(

studentid int primary key,--定义学生ID为主键

classid int ,--外键值,跟班级表classid 属性类型相同

stuname varchar(20),--学生姓名

---定义外键

foreign key(classid) references class(classid) --本表classid是基于class表classid的外键

)

---------

如上定义了主外键后,两个表间的关系就是一对多的关系了,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如:

--在班级表为空的情况往学生表插入一条记录是不允许的:

insert into students(studentid,classid,stuname)values(1,1,'小明')

系统会抛出异常提示主键表班级表内班级ID不存在这样是不允许插入的;

必须要先往班级表内插入一条记录:

insert into class(classid,classname)values(1,'一班')

后才能执行插入前面一条往学生表插入信息的语句

--------------可了解一些了?真累啊

查看mysql外键方式主要是通过第三方工具或者是sql语句,主要有以下三种方式

1、使用Navicateformysql,打开数据库、查看数据库表、查看设计表、选择外键选项卡,就可以查看外键

2、使用sql语句

showcreatetable表名;这个命令可以查看表的所有信息,包括一些字段类型,字段的约束,外键,主键,索引,字符编码等等。

3、查看某个表或者某个列的外键信息

selectTABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,

REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME from KEY_COLUMN_USAGE where REFERENCED_TABLE_NAME = '<table>';

如果需要查看某一列上的外键关系,需要添加列的条件REFERENCED_COLUMN_NAME.xx=xx

方法一比较直观,方法三比较准确!

扩展资料:

MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。

由于MySQL是开放源代码的,因此任何人都可以在GeneralPublicLicense的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

参考资料来源:百度百科——mySQL

1、关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。

2、主关键字(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录

3、外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字

4、在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单

外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在 *** 作上的一致性与完整性。

优点:

精简关联数据,减少数据冗余

避免后期对大量冗余处理的额外运维 *** 作。

降低应用代码复杂性,减少了额外的异常处理

相关数据管理全由数据库端处理。

增加文档的可读性

特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。

缺点:

性能压力

外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。

其他功能的灵活性不佳

比如,表结构的更新等。

表A中有字段(如身份z号)做了主键,表B中也有这个字段(身份z号),这里的身份z号一定来自表A同样字段里的内容,那么表B的这个字段就叫表A字段的外键,也就是两个表以身份z号这个字段建立了联系。

表A中身份z号字段里面的身份z号一定是唯一的,不能有重复,而表B里面的同一个身份z号可以出现多次。这称为表A身份z号字段与表B身份z号字段建立了一对多的关系。

外键的作用就是可以让身份z号保证是来自表A中,也就是保证了数据的规范性;如果要删除A表中的某个身份z号,那么首先要删除B表中同样的身份z号,这保证了数据的完整性。

以上就是关于数据库中外键的概念及作用是什么全部的内容,包括:数据库中外键的概念及作用是什么、数据库中的外键是什么意思、mysql如何查看外键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存