精华内容
下载资源
问答
  • 关系模式中主键和外键
    千次阅读
    2020-08-20 11:18:25

    刚接触关系型数据库的同学,会听过主键和外键的概念。这是关系型数据库的基本概念,需要清楚理解。今天我就以简洁的语言总结一下这个概念。

    1. 主键。一句话概括:一张表中,可以用于唯一标识一条记录的字段组(或者说是属性组)。给你一个主键的值,你就可以找到一条确定的记录。如: 学生表:学号,姓名,性别,课程。这里学号就是主键。给你一个学号,就可以找到一条学生记录。
      课程表:课程编号,课程名称,学分。这里课程编号就是主键。给你一个课程编号,就可以找到一条课程记录。
      成绩表:学号,姓名,课程编号,成绩。这里学号,课程编号都没法做为主键。因为学号可以对映多个成绩,如张三可以修数学,语文。一个课程编号可以对映多个成绩,如语文课程编号可以对映张三的成绩,也可以对映李四的成绩。但是(学号,课程编号)这个属性组可以作为主键。
    2. 外键。一句话概括:如果一个表A的主键还存在与另一个表B中,那么B中这个字端可以作为A表的外键。(有一种好记的方法是,存在与外面的主键就是外键)。比如上面成绩表的学号是学生表的外键,成绩表的课程编号是课程表的外键。

    主键是唯一的,用于标识一张表。外键可以有多个,用于建立表和表的关系。

    更多相关内容
  • 使用主键和外键的“多对多”数据库关系。 该项目的目标是为一个通用的国际非政府组织创建一个完整的全栈项目的初始后端。 我们选择了亚洲,并将该非政府组织指定为亚洲非政府组织(ANGO)。 前端分为两个部分,即...
  • 关系模型——主键外键、索引

    千次阅读 2020-12-16 17:54:08
    主键 主键:唯一识别字段 要求:记录一旦插入到表主键最好不要再修改,因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响。 基本选取原则:选择与业务无关的字段,命名id id字段常用类型: 自增...

    主键

    主键:唯一识别字段

    要求:记录一旦插入到表中,主键最好不要再修改,因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响。

    基本选取原则:选择与业务无关的字段,命名id

    id字段常用类型:

    自增整数BIGINT类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键;

    全局唯一GUID类型:使用一种全局唯一的字符串作为主键,类似8f55d96b-8acc-4636-8cb8-76bf8abc2f57。GUID算法通过网卡MAC地址、时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的,大部分编程语言都内置了GUID算法,可以自己预算出主键。

    联合主键:关系数据库实际上还允许通过多个字段唯一标识记录,即两个或更多的字段都设置为主键,这种主键被称为联合主键 ;对于联合主键,允许一列有重复,只要不是所有主键链均重复即可

    test
    id_numid_typeother columns...
    1A......
    2A......
    2B......

    如果我们把上述表的id_numid_type这两列作为联合主键,那么上面的3条记录都是允许的,因为没有两列主键组合起来是相同的。

    没有必要的情况下,我们尽量不使用联合主键,因为它给关系表带来了复杂度的上升。

     外键

    idnameother columns...
    1

    1班

    ......

    22班......
    idclass_idname

    other columns...

    11小明......
    22小红......

     

    外键:在students表中,通过class_id这一字段,将数据与另一张表关联起来,此时这个class_id,称之为外键

    注!外键并不是通过列名实现的,而是通过定义外键约束实现的

    其中,外键约束的名称fk_class_id可以任意,FOREIGN KEY (class_id)指定了class_id作为外键,REFERENCES classes (id)指定了这个外键将关联到classes表的id列(即classes表的主键)

    ALTER TABLE students
    ADD CONSTRAINT fk_class_id
    FOREIGN KEY (class_id)
    REFERENCES classes (id);

    删除外键约束:

    注!删除外键约束并没有删除外键这一列。删除列是通过DROP COLUMN ...实现的。

    ALTER TABLE students
    DROP FOREIGN KEY fk_class_id;

    多对多:

    通过一个表的外键关联到另一个表,我们可以定义出一对多关系。多对多”关系。就是通过两个一对多关系实现的,即通过一个中间表,关联两个一对多关系,就形成了多对多关系。例如,一个老师可以对应多个班级,一个班级也可以对应多个老师,因此,班级表和老师表存在多对多关系

    多对多实际上是俩个一对多关系实现的,通过中间表,关联俩个一对多的关系,行成了多对多的关系。

    teachers

    id

    name
    1张老师
    2赵老师
    3王老师
    4李老师

     

    class
    idname
    1

    一班

    2二班

     

    teacher_class中间表
    idteacher_idclass_id
    111
    212
    321
    422
    531
    642

     

    通过中间表teacher_class,可知班级表class与老师表teachers之间的关系

    • id=1的张老师对应id=1,2的一班和二班
    • id=2的王老师对应id=1,2的一班和二班
    • id=3的李老师对应id=1的一班
    • id=4的赵老师对应id=2的二班

    同理,class到teachers的关系:

    • id=1的一班对应id=1,2,3的张老师、王老师和李老师
    • id=2的二班对应id=1,2,4的张老师、王老师和赵老师

    一对一:

    一个表的记录对应到另一张表的唯一记录

    索引

    关系数据库中,对某一列或多个列的值进行预排序的数据结构,通过使用索引,可以让数据库系统不用扫描整个表,而是直接定位到符合条件的记录,加快查询速度。

    创建索引:ADD INDEX

    索引的效率取决于索引列的值是否相同,即该列的值越不相同,那么索引效率越高。

    对于主键,关系型数据库会自动创建主键索引,因为主键是唯一的,所以使用主键效率最高

    ALTER TABLE students
    ADD INDEX idx_score(score);
    使用ADD INDEX idx_score (score)就创建了一个名称为idx_score,使用列score的索引。
    索引名称是任意的,索引如果有多列,可以在括号里依次写上
    ALTER TABLE students
    ADD INDEX idx_score(name,score);
    

    索引优缺点:

    优点:提高查询效率

    缺点:在增、删、改时,需要同时修改索引,因此,索引越多,增、删、改速度越慢

    唯一索引:

    在设计关系数据表的时候,看上去唯一的列,例如身份证号、邮箱地址等,因为他们具有业务含义,因此不宜作为主键。

    但是,这些列根据业务要求,又具有唯一性约束:即不能出现两条记录存储了同一个身份证号。这个时候,就可以给该列添加一个唯一索引。例如,我们假设students表的name不能重复:

    ALTER TABLE students
    ADD UNIQUE INDEX uni_name (name);
    
    通过UNIQUE关键字我们就添加了一个唯一索引。
    也可以只对某一列添加一个唯一约束而不创建唯一索引。
    
    ALTER TABLE students
    ADD CONSTRAINT uni_name UNIQUE (name);

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 关于关系型数据库基本知识(主键外键、一对一、一对多、多对一等),适合了解数据库最基本知识的初学者阅读
  • 关系模式中用户正在使用的候选键称为主键(primary key)。 一般,如不加说明,键是指主键主键的取值不能缺失,也不能为空值(null)。 2.外键关系模式中,如果某属性值是其他模式的候选键,那么该属性集对模式R来...

    1.主键

    关系模式中用户正在使用的候选键称为主键(primary key)。
    一般,如不加说明,键是指主键。
    主键的取值不能缺失,也不能为空值(null)。

    2.外键

    在关系模式中,如果某属性值是其他模式的候选键,那么该属性集对模式R来说是外键。

    3.超键

    在关系模式中,能唯一标识元组的属性集称为超键。

    4.候选键

    如果一个属性集能唯一标识元组,且由不包含多余属性,那么这个属性集称为候选键。
    候选键是没有多余属性的超键。

    举例

    假设有如下两个表:
    学生(学号,姓名,性别,身份证号,教师编号)
    教师(教师编号,姓名,工资)
    超键:
    由超键的定义可知,学生表中含有学号或者身份证号的任意组合都为此表的超键。如:(学号)、(学号,姓名)、(身份证号,性别)等。
    候选键:
    候选键属于超键,它是最小的超键,就是说如果再去掉候选键中的任何一个属性它就不再是超键了。学生表中的候选键为:(学号)、(身份证号)。
    主键:
    主键就是候选键里面的一个,是人为规定的,例如学生表中,我们通常会让“学号”做主键,教师表中让“教师编号”做主键。
    外键:
    外键比较简单,学生表中的外键就是“教师编号”。外键主要是用来描述两个表的关系。

    展开全文
  • 关系型数据库和主键外键

    千次阅读 2021-01-11 21:55:07
    多对多:必须通过单独的一张表来实现(一个老师多个学生,一个学生多个老师)班级一张表,老师一张表,班级老师的关系一张表 主键: 定义:能够唯一标示一个事物的一个字段或者多个字段的组合 含有主键的叫做主键表...

    SQL server的基础学习3

    一、什么是关系

    定义:表与表之间的联系
    实现方法:通过设置不同形式的外键来体现表和表的不同关系

    一对一

    既可以把表A的主键充当表B的外键,也可以把表B的主键充当表A的外键(一个人只有一把钥匙,一把钥匙只给一个人)

    一对多

    一对多:把表A的主键充当表B的外键(一个部门有多个员工,一个员工只能在一个部门)
    在多的一方添加外键(在员工表中添加外键即:员工表为外键表,部门表是主键表)
    在这里插入图片描述
    在这里插入图片描述

    多对多

    多对多:必须通过单独的一张表来实现(一个老师多个学生,一个学生多个老师)班级一张表,老师一张表,班级和老师的关系一张表
    在这里插入图片描述
    在这里插入图片描述 在这里插入图片描述

    二、主键和外键

    主键

    定义:能够唯一标示一个事物的一个字段或者多个字段的组合
    附注:
    1、含有主键的叫做主键表,主键通常都是整数,不建议用字符串当主键(如果主键是用于集群式服务,才可以考虑用字符串当主键)
    2、主键的值通常都不允许修改,除非本记录被删除
    3、主键不要定义成id,而要定义成表面_id
    4、要用代理主键,不要用业务主键(任何一张表都不建议使用有业务含义的字段充当主键,我们通常都是在表中单独添加一个整型的编号充当主键字段)

    外键

    定义:如果一个表中的若干个字段是来自另外若干个表的主键或唯一键,则这若干个字段就是外键
    附注:
    1、外键通常都是来自另外表的主键而不是唯一键,因为唯一键可能为null
    2、外键不一定是来自另外的表,也可能来自表的主键(员工表中上层管理人员也是员工中的数据)
    3、含有外键的表叫外键表,外键字段来自的呢一张表叫做主键表
    问题:先删除主键表还是外键表?
    答:先删除外键表
    如果先删除主键表会报错,因为这会导致外键表中的数据引用失败

    展开全文
  • 主要简单介绍了在 MySQL 数据库如何查看某张表,以及对表做一些增删改查的操作,本篇 blog 主要介绍一张表如何设置唯一标识,以及两张表之间如何关联,即我们日常听说的主键和外键主键含义:关系型数据库的一...
  • 关系模型 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。...在关系数据库关系是通过主键和外键来维护
  • 数据库主键外键关系

    千次阅读 多人点赞 2021-09-25 10:56:58
    文章目录一、主键外键:1.概念2.区别3.作用4.举例:5....一、主键外键: 1.概念 SQL的主键表示唯一标识一条记录,...外键主键相对,作用就是通过主外键的之间关系使对张表的数据更好的关联。 2.区别 主键——一个
  • 关系模型Relational_Model,主键Primary_Key,外键Foreign_Key【关系数据库SQL教程2】
  • 主键和外键

    千次阅读 2020-10-28 12:30:47
    当建立主键后,默认会建立索引,而实际数据在磁盘上存储的顺序和主键列的顺序是一致的。 主键选择策略: 1.业务主键:有业务意义的字段 2.逻辑主键:完全给程序看的,业余人员不会看的数据 推荐逻辑主键 组合主键: ...
  • 数据库主键和外键关系

    千次阅读 2019-09-23 11:28:15
    (百度百科):数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件的数据进行新增、查询、更新...
  • 关于数据库主键和外键(终于弄懂啦)

    万次阅读 多人点赞 2019-06-18 15:59:59
    转 关于数据库主键和外键(终于弄懂啦) 2018年07月16日 19:44:24 f45056231p 阅读数 19385 ...
  • 数据库主键外键关系,通俗易懂

    万次阅读 多人点赞 2017-12-16 16:13:08
    关系型数据库的一条记录有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如学生表(学号,姓名,性别,班级)其中每个学生的学号是唯一的,学号就是一个主键课程表...
  • 1、--创建表createtabletb_Dept(Deptidchar(2)Primarykey,DeptNamechar(16)NotNull)2、--外键约束createtabletb_Student(Studidchar(10)Primarykey,Studnamechar(8)Notnull,Deptidchar(2)Notnull,ConstraintFK_...
  • SQL的主键和外键约束

    2020-01-07 18:14:12
    SQL的主键和外键约束 SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值。 (1)插入非空值时,如果主键没有这个值,则不能插入。 (2)更新时,不能改为主键没有的值。 (3)删除主键表记录时,你可以...
  • 阅读以下说明图,回答问题1至问题4。【说明】某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩考试成绩,其主要功能描述如下:1.每门课程都有3到6个单元构成,每个单元结束后会进行一次...
  • mysql什么是主键和外键

    千次阅读 2021-06-23 10:12:06
    关系型数据库的一条记录有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程...
  • 一、什么是主键外键关系型数据库的一条记录有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一...
  • 主键和外键的区别

    千次阅读 2018-09-27 00:46:03
    foreign key 标识该属性为该表的外键,是与之联系的某表的主键 not null 标识该属性不能为空 unique 标识该属性的值是唯一的 auto_increment 标识该属性的值自动增加 default 为该属性设置默认值 2.设置表的...
  • 什么是主键和外键

    万次阅读 多人点赞 2018-07-02 09:06:59
    一、什么是主键外键关系型数据库的一条记录有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一...
  • 文章导读: 在后面跟其他数据库做对比的时候,这个是其中一个点...本文解决问题:主键外键的纠葛 先来看看主键外键的来源吧: 1、主键约束( PRIMARY KEY): (1)唯一标识数据库表的每条记录; (2)主键必须...
  • SQL 主键和外键的定义以及使用

    千次阅读 2021-06-28 16:11:01
    关系数据库依赖于主键—它是数据库物理模式的基石。 唯一性:一个数据表只能有一个主键 标识性:一个数据表的所有记录都具有不同的主键取值 非空性:不能为空 人为的选取某个候选码为主码 作为一个可以被外键...
  • MySQL主键外键

    千次阅读 2021-01-19 05:46:35
    定义主键和外键主要是为了维护关系数据库的完整性,总结一下:1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是...
  • 主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能可用性都有着决定性的影响。 必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这...
  • 主键外键、超键、候选键

    千次阅读 2021-01-17 13:39:10
    课本上给各种键的定义如下:(所有的键都是一个集合,这个集合可以包括一个集,也可以是多个集)超键(super key):在关系中能惟一标识元素属性的集称为关系模式的超键。候选键(Candidate Key):不含有多余属性的超键...
  • 关于数据库主键和外键,索引

    千次阅读 2018-06-28 18:18:29
    关系型数据库的一条记录有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 ...
  • 成绩表的学号不是成绩表的主键,但它学生表的学号相对应,并且学生表的学号是学生表的主键,则称成绩表的学号是学生表的外键 同理 成绩表的课程号是课程表的外键 定义主键和外键主要是为了维护关系...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,991
精华内容 14,796
热门标签
关键字:

关系模式中主键和外键