精华内容
下载资源
问答
  • 表的主键与外键

    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(主键)班级ID

    className 班级名称


    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 外键表(外键表主键)
    )
    外键的建立要有与之相关联的表,并且这里的外键得是那个表的主键。

    展开全文
  • 那么设计数据库时候就应该在学生表内存放班级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对象中的表指定主键、建立关系,可以保证数据的完整性,例如,主键取值不能重复(例如,定义学号位... 设置表的主键:(其中MyDataSet是DataSet类对象)DataColumn[] pKey=new DataColumn[1];pKey[0]=MyData...
  • 外键表就是要被连接表; 主键表是要定义外键主表。 图一中。“系表”是主键表, “学生表”是外键表 转载于:https://www.cnblogs.com/liuchaogege/p/4650656.html...
  • 当我们在创建表的时候就声明了主键的话,Mysql就会对我们插入的每一条记录进行检验,若有主键值相同时就会报错。另外主键是默认NotNull的。声明主键的两种方式:主键只是单个列时(比如设置学生的学号为主键):Stu_id...
  • 2015/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
    学生表(学号,姓名,性别,班级)  其中每个学生学号是唯一,学号就是一个主键  课程表(课程编号,课程名,学分)  其中课程编号是唯一,课程编号就是一个主键  成绩表(学号,课程号,成绩)  成绩表中单...
  • 一、什么是主键、外键: 关系型...所以 学号和姓名的属性组是一个主键 上机记录表中的序列号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
  • 什么是主键和外键

    2020-07-19 16:01:31
    主键:能够唯一标识一段记录的属性或者属性组 外键:用于与另一张表产生关联 比如: 学生表(学号,姓名,性别,班级) ...成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中...
  • 数据库的主键和外键

    2021-02-08 16:30:59
    学生表(学号,姓名,性别,班级) 课程表(课程编号,课程名,学分) 成绩表(学号,课程号,成绩) 1、成绩表主键:学号和课程号的属性组是一个主键 。...比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。 ...
  • 删除学生表的主键。语句如下: ALTER TABLE 学生 DROP PRIMARY KEY; 添加外键 给学生表添加外键:班级编号。班级编号是班级表的主键,该外键约束命名为fk_学生,语句如下: ALTER TABLE 学生 ADD ...
  •   学生表(学号,姓名,性别,班级)   其中每个学生学号是唯一,学号就是一个主键   课程表(课程编号,课程名,学分)   其中课程编号是唯一,课程编号就是一个主键   成绩表(学号,课程号,成绩)  ...
  • https://blog.csdn.net/change_any_time/article/details/79623305联合主键:当两个数据表形成的是多对多的关系,那么需要通过两个数据表的主键来组成联合主键,就可以确定每个数据表的其中一条记录了例:学生表:...
  • 一、什么是主键、外键:关系型数据库中一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如学生表(学号,姓名,性别,班级)其中每个学生学号是唯一,...
  • 数据库的主键与外键

    2018-06-08 17:31:59
    一、定义 主键:在数据表中... 外键:表的外键是另一表的主键用于保持数据的一致性, 外键可以有重复的, 可以是空值。 如:A表中的一个字段,是B表的主键,那他就可以是A表的外键。二、 主键、外键和索引的区别...
  • Oracle的主键和外键

    2020-05-12 21:32:24
    文章目录一、表的主键二、表的外键1、外键的概念2、外键的作用3、外键约束4、创建外键5、删除外键6、示例脚本三、版权声明 一、表的主键 在现实世界中,很多数据具有唯一的特性,例如身份证号码,在国家人口基本信息...
  • (2.0分)【填空题】完成以下代码,利用T-SQL语句创建一个名为成绩单的表,包含学号,课程编号,分数三列,要求将学号课程编号设置为主键,分数取值范围为0~100. create table 成绩单( 学号 char(4) not null, 课程编号 ...
  • 主键和外键

    2016-02-14 09:58:31
    A表中的非主键字段是B张表中的主键,则说是A表非主键字段字段是B表的外键.例如成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
  • 什么是复合主键

    2019-02-26 10:17:00
    主键是唯一索引,通常会用GUID最为主键,但是并不是每个表都存在ID字段,例如学生表(姓名,生日,性别,班级),这里面每一个值都可能重复,无法使用单一字段作为主键,这时我们可以将多个字段设置为复合主键,由...
  • 如:学号可以作为学生表的主键,课程号可以作为课程表的主键,(学号,课程号)作为成绩表的主键(组合键) 说明: (1)一个表只能有一个主键,主键约束确保了表中的行是唯一的。 (2)表中可以没有主键,但是通常...
  • 其中“学生信息”的外键“班号”引用了“班级的主键“班号”,“成绩”的外键“学号”引用了“学生信息的主键“学号”,“成绩”的外键“课程号”引用了“课程信息的主键“课程号”,而“成

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,173
精华内容 469
关键字:

学生表的主键是