-
表的主键与外键
2017-08-03 10:55:01例如在学生表中,存有两条一样的学生记录是不必要的,也是不合适的。 在现实世界中,除了事物本身的信息外,事物之间还存在着很多联系,这种联系反映到数据库中就体现为表之间的联系。例如在图1中,学生表存储学生...一个关系表事实上是具有共同属性的一类实体的集合。按照集合的定义,集合中元素不能重复。同样,关系表中也不应该有重复记录。例如在学生表中,存有两条一样的学生记录是不必要的,也是不合适的。
在现实世界中,除了事物本身的信息外,事物之间还存在着很多联系,这种联系反映到数据库中就体现为表之间的联系。例如在图1中,学生表存储学生信息,系表存储系的信息。但学生表和系表之间是有联系的:每个学生都属于一个系,而每个系都可以包含多名学生,所以学生表和系表就存在着“属于”的联系。
(图1)
在关系数据库中,如何存储这种联系的信息呢?就要借助“外键”实现。如果一个表中的某一列是另外一个表的中的主键,那么称这列为外键。例如图1学生表中“系号”就是外键,因为系号是系表的主键(建立主外键关系的前提是两张表中有相同的字段和属性)。在学生表中设计了“系号”一列,就是为了存储学生和系之间的联系信息。
外键就是连接两个表的纽带。通过外键和主键的等值连接,如图1,就可以将不同表里的相关纪录连接在一起,从而实现了数据库中相关数据的查找。利用外键,可以查询每个学生所在系的信息,也可以查询在制定的系所包含的学生信息。
当两个表通过“外键-主键”建立了联系之后,就要保持两表数据的一致性。例如在插入学生记录的同时,外键的值(系号)必须是系表中主键的有效值(必须有这个系),或者是空值(学生的系暂未确定);又如,在删除系表记录时,如果在学生表里还有该系学生的记录(该系还有学生在就读),那么系记录就不能删除。
下面再分析一个员工信息管理系统的例子。该数据库中建有员工基本信息表(person)、部门编码表(deparment)和学历编码表(education),如图2所示:
(图2)
部门编码表保存了部门编号和部门名称,部门编号(DepID)是主键,每个部门的编号在表中具有唯一性,这样就能保证每行都可以用主键来标识。
学历编码表保存了学历编号和学历名称,学历编号(EduID)是主键。
员工基本信息表存储员工的基本信息,需要包括工作证号、姓名、部门编号、职务、工资、学历编号等字段,工作证号(ID)是该表的主键。在该表中,Department列是一个外键,匹配部门编码表中的DepID主键;Education列也是一个外键,匹配学历编码表中的EduID主键。利用外键和主键的连接,就可以查询出某人,如张三的部门是经理室,他的学历室硕士。
利用“外键-主键”的连接方式能更好夺得简化数据库设计过程,减少数据冗余,提高数据库效率。
-
sql 主键表与外键表的区分
2018-07-13 09:29:37主键表和外建表是相对来说的,简单的说就是一个表的主键是另外一张表的外键。例如class 班级表主要字段如下:classId PRIMARY KEY(主键)班级IDclassName 班级名称studen 学生表主要字段如下stuId PRIMARY KEY...主键表和外建表是相对来说的,简单的说就是一个表的主键是另外一张表的外键。
例如
class 班级表
主要字段如下:
classId PRIMARY KEY(主键)班级IDclassName 班级名称
studen 学生表
主要字段如下
stuId PRIMARY KEY(主键)学生id
stuName 学生姓名classId FOREIGN KEY(外建)所属班级id
class表中的主键classId 是student表中的外建,则认为class为主键表 student为外键表
转自:
https://zhidao.baidu.com/question/1386051600953314060.html
表示感谢!!!
-
表的主键与外键,创建外键表
2014-09-14 22:11:03例如在学生表中,存有两条一样的学生记录是不必要的,也是不合适的。 在现实世界中,除了事物本身的信息外,事物之间还存在着很多联系,这种联系反映到数据库中就体现为表之间的联系。例如在图1中,学生表存储...一个关系表事实上是具有共同属性的一类实体的集合。按照集合的定义,集合中元素不能重复。同样,关系表中也不应该有重复记录。例如在学生表中,存有两条一样的学生记录是不必要的,也是不合适的。
在现实世界中,除了事物本身的信息外,事物之间还存在着很多联系,这种联系反映到数据库中就体现为表之间的联系。例如在图1中,学生表存储学生信息,系表存储系的信息。但学生表和系表之间是有联系的:每个学生都属于一个系,而每个系都可以包含多名学生,所以学生表和系表就存在着“属于”的联系。
(图1)
在关系数据库中,如何存储这种联系的信息呢?就要借助“外键”实现。如果一个表中的某一列是另外一个表的中的主键,那么称这列为外键。例如图1学生表中“系号”就是外键,因为系号是系表的主键(建立主外键关系的前提是两张表中有相同的字段和属性)。在学生表中设计了“系号”一列,就是为了存储学生和系之间的联系信息。
外键就是连接两个表的纽带。通过外键和主键的等值连接,如图1,就可以将不同表里的相关纪录连接在一起,从而实现了数据库中相关数据的查找。利用外键,可以查询每个学生所在系的信息,也可以查询在制定的系所包含的学生信息。
当两个表通过“外键-主键”建立了联系之后,就要保持两表数据的一致性。例如在插入学生记录的同时,外键的值(系号)必须是系表中主键的有效值(必须有这个系),或者是空值(学生的系暂未确定);又如,在删除系表记录时,如果在学生表里还有该系学生的记录(该系还有学生在就读),那么系记录就不能删除。
下面再分析一个员工信息管理系统的例子。该数据库中建有员工基本信息表(person)、部门编码表(deparment)和学历编码表(education),如图2所示:
(图2)
部门编码表保存了部门编号和部门名称,部门编号(DepID)是主键,每个部门的编号在表中具有唯一性,这样就能保证每行都可以用主键来标识。
学历编码表保存了学历编号和学历名称,学历编号(EduID)是主键。
员工基本信息表存储员工的基本信息,需要包括工作证号、姓名、部门编号、职务、工资、学历编号等字段,工作证号(ID)是该表的主键。在该表中,Department列是一个外键,匹配部门编码表中的DepID主键;Education列也是一个外键,匹配学历编码表中的EduID主键。利用外键和主键的连接,就可以查询出某人,如张三的部门是经理室,他的学历室硕士。
利用“外键-主键”的连接方式能更好夺得简化数据库设计过程,减少数据冗余,提高数据库效率。
创建带有外键的表
create table 表名 ( 列名1 类型 primary key,//主键 列名2 类型, 列名3 类型, foreign key(列名3)references on 外键表(外键表主键) ) 外键的建立要有与之相关联的表,并且这里的外键得是那个表的主键。
-
数据库表中的主键和外键
2020-04-01 20:36:53那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢? 因为,你想一想班级表内如果放学生那么记录可能就是这样: 1班ID 1班 xx同学id 1班ID 1班 xx同学id .. 这是不允许的,...主外键的存在是依托两个实体之间的关系而存在的;
比如班级与学生的关系:
一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系;
那么设计数据库的时候就应该在学生表内存放班级的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,'一班')
后才能执行插入前面一条往学生表插入信息的语句.. -
为DataSet对象中的表指定主键、建立关系
2012-12-12 17:38:00为DataSet对象中的表指定主键、建立关系,可以保证数据的完整性,例如,主键取值不能重复(例如,定义学号位... 设置表的主键:(其中MyDataSet是DataSet类对象)DataColumn[] pKey=new DataColumn[1];pKey[0]=MyData... -
主键,外键,主键表,外间表
2015-07-16 11:10:00外键表就是要被连接的表; 主键表是要定义外键的主表。 图一中。“系表”是主键表, “学生表”是外键表 转载于:https://www.cnblogs.com/liuchaogege/p/4650656.html... -
mysql管理主键的表_Mysql的学习3___数据的管理,主键 外键 以及增改删
2021-01-28 06:11:48当我们在创建表的时候就声明了主键的话,Mysql就会对我们插入的每一条记录进行检验,若有主键值相同时就会报错。另外主键是默认NotNull的。声明主键的两种方式:主键只是单个列时(比如设置学生的学号为主键):Stu_id... -
MySQL_1_05 表的定义_主键与索引.pdf
2020-03-19 08:38:072015/12/15 C/C++学习指南MySQL篇 1.5 表的定义主键与索引 作者邵发 官网 主键Primary Key 主键(Primary Key)用于唯一地标识一条记录 比如对于学生信息表 每个学生的ID是不同的所以可以用ID来唯一标识一条记录所以 ... -
主键和外键 班级表
2019-12-13 17:32:29那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢? 因为,你想一想班级表内如果放学生那么记录可能就是这样: 1班ID 1班 xx同学id 1班ID 1班 xx同学id … 这是不允许的... -
关系数据库表主键和外键
2013-08-03 15:31:20学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单... -
如何区分SQL数据库中的主键与外键
2021-01-19 22:14:13一、什么是主键、外键: 关系型...所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 -
什么是主键和外键
2020-07-19 16:01:31主键:能够唯一标识一段记录的属性或者属性组 外键:用于与另一张表产生关联 比如: 学生表(学号,姓名,性别,班级) ...成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中... -
数据库的主键和外键
2021-02-08 16:30:59学生表(学号,姓名,性别,班级) 课程表(课程编号,课程名,学分) 成绩表(学号,课程号,成绩) 1、成绩表主键:学号和课程号的属性组是一个主键 。...比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。 ... -
sql给已有表添加或删除约束(主键约束,外键约束,check约束)
2020-05-21 10:16:26删除学生表的主键。语句如下: ALTER TABLE 学生 DROP PRIMARY KEY; 添加外键 给学生表添加外键:班级编号。班级编号是班级表的主键,该外键约束命名为fk_学生,语句如下: ALTER TABLE 学生 ADD ... -
[一点笔记]主键与外键-MySQL中的表连接
2017-11-21 21:38:52学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) ... -
mysql 联合主键和复合主键的区别
2019-02-19 00:00:00https://blog.csdn.net/change_any_time/article/details/79623305联合主键:当两个数据表形成的是多对多的关系,那么需要通过两个数据表的主键来组成联合主键,就可以确定每个数据表的其中一条记录了例:学生表:... -
mysql主键和主键建立关系_数据库中的主键与外键的关系,通俗易懂
2021-01-19 05:32:34一、什么是主键、外键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如学生表(学号,姓名,性别,班级)其中每个学生的学号是唯一的,... -
数据库的主键与外键
2018-06-08 17:31:59一、定义 主键:在数据表中... 外键:表的外键是另一表的主键用于保持数据的一致性, 外键可以有重复的, 可以是空值。 如:A表中的一个字段,是B表的主键,那他就可以是A表的外键。二、 主键、外键和索引的区别... -
Oracle的主键和外键
2020-05-12 21:32:24文章目录一、表的主键二、表的外键1、外键的概念2、外键的作用3、外键约束4、创建外键5、删除外键6、示例脚本三、版权声明 一、表的主键 在现实世界中,很多数据具有唯一的特性,例如身份证号码,在国家人口基本信息... -
已知在sql_完成以下代码,在教学管理数据库的学生表中使用T-SQL语句为学号列定义主键约束。 ________table ...
2021-02-11 09:27:27(2.0分)【填空题】完成以下代码,利用T-SQL语句创建一个名为成绩单的表,包含学号,课程编号,分数三列,要求将学号课程编号设置为主键,分数取值范围为0~100. create table 成绩单( 学号 char(4) not null, 课程编号 ... -
主键和外键
2016-02-14 09:58:31A表中的非主键字段是B张表中的主键,则说是A表非主键字段字段是B表的外键.例如成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 -
什么是复合主键
2019-02-26 10:17:00主键是唯一的索引,通常会用GUID最为主键,但是并不是每个表都存在ID字段,例如学生表(姓名,生日,性别,班级),这里面每一个值都可能重复,无法使用单一字段作为主键,这时我们可以将多个字段设置为复合主键,由... -
数据库的完整性:主键和外键
2020-06-02 17:33:20如:学号可以作为学生表的主键,课程号可以作为课程表的主键,(学号,课程号)作为成绩表的主键(组合键) 说明: (1)一个表只能有一个主键,主键约束确保了表中的行是唯一的。 (2)表中可以没有主键,但是通常... -
MySQL数据库的主键与外键
2020-06-12 23:05:47其中“学生信息表”的外键“班号”引用了“班级表”的主键“班号”,“成绩表”的外键“学号”引用了“学生信息表”的主键“学号”,“成绩表”的外键“课程号”引用了“课程信息表”的主键“课程号”,而“成