精华内容
下载资源
问答
  • 关系模型——主键、外键、索引
    千次阅读
    2020-12-16 17:54:08

    主键

    主键:唯一识别字段

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

    基本选取原则:选择与业务无关的字段,命名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);

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    更多相关内容
  • 关系模型Relational_Model,主键Primary_Key,外键Foreign_Key【关系数据库SQL教程2】
  • 关系型数据库和主键外键

    千次阅读 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、含有外键的表叫外键表,外键字段来自的呢一张表叫做主键表
    问题:先删除主键表还是外键表?
    答:先删除外键表
    如果先删除主键表会报错,因为这会导致外键表中的数据引用失败

    展开全文
  • 我们已经知道,关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表。 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 表的每一列称为字段...

    我们已经知道,关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表。

    表的每一行称为记录(Record),记录是一个逻辑意义上的数据。

    表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。

    字段定义了数据类型(整型、浮点型、字符串、日期等),以及是否允许为NULL。注意NULL表示字段数据不存在。一个整型字段如果为NULL不表示它的值为0,同样的,一个字符串型字段为NULL也不表示它的值为空串’’。

    通常情况下,字段应该避免允许为NULL。不允许为NULL可以简化查询条件,加快查询速度,也利于应用程序读取数据后无需判断是否为NULL。

    1.主键

    在关系数据库中,一张表中的每一行数据被称为一条记录。一条记录就是由多个字段组成的。例如,students表的两行记录

    在这里插入图片描述
    对于关系表,有个很重要的约束,就是任意两条记录不能重复。不能重复不是指两条记录不完全相同,而是指能够通过某个字段唯一区分出不同的记录,这个字段被称为主键

    作为主键最好是完全业务无关的字段,我们一般把这个字段命名为id。常见的可作为id字段的类型有:

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

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

    对于大部分应用来说,通常自增类型的主键就能满足需求。我们在students表中定义的主键也是BIGINT NOT NULL AUTO_INCREMENT类型。

    2.联合主键

    关系数据库实际上还允许通过多个字段唯一标识记录,即两个或更多的字段都设置为主键,这种主键被称为联合主键。

    对于联合主键,允许一列有重复,只要不是所有主键列都重复即可:

    在这里插入图片描述
    如果我们把上述表的id_num和id_type这两列作为联合主键,那么上面的3条记录都是允许的,因为没有两列主键组合起来是相同的。

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

    3.小结

    主键是关系表中记录的唯一标识。主键的选取非常重要:主键不要带有业务含义,而应该使用BIGINT自增或者GUID类型。主键也不应该允许NULL。

    可以使用多个列作为联合主键,但联合主键并不常用。

    展开全文
  • 参考文章: 廖雪峰SQL教程 关系模型 https://www.liaoxuefeng.com/wiki/1177760294764384/1218728991649984

    ctrl + 放大页面

    ctrl - 缩小页面

    参考文章:

    廖雪峰SQL教程 关系模型

    https://www.liaoxuefeng.com/wiki/1177760294764384/1218728991649984

    展开全文
  • 【SQL基础】关系模型 —— 主键

    千次阅读 2020-02-26 16:24:11
    主键(PRIMARY KEY) - 描述 能通过某个字段唯一区分出不同的记录,这个字段被成为主键 - 特性 a.主键必须包含唯一的值 b.主键列不能包含NULL值 c.每个表都应该有一个主键,并且每个表只能有一个主键 - 选取主键的...
  • 关系模式中的各种码(键/关键字)

    千次阅读 2021-03-15 21:02:18
    码,又称键、关键字,英文是key。唯一标识实体的属性集称为码。 ...全码:一个候选码包含关系模式中的所有属性,则该候选码为全码 举个例子: 关系Student(学号,姓名,年龄,院系,班级)...
  • 刚接触关系型数据库的同学,会听过主键和外键的概念。这是关系型数据库的基本概念,需要清楚理解。今天我就以简洁的语言总结一下这个概念。 主键。一句话概括:一张表中,可以用于唯一标识一条记录的字段组(或者说...
  • ER图转为关系模式(超详细,超简单)

    万次阅读 多人点赞 2020-04-04 15:43:24
    通过本文你可以了解ER图如何转为关系模式
  • 数据库函数依赖关系模式范式候选键主键码学习教案.ppt
  •  第三范式的定义:如果关系模式R中的所有非主属性对任何候选关键字都不存在传递依赖,则称关系R是属于第三范式的。记作R 3NF。  如:学生关系模式S1(学号,姓名,系号,系名,系地址)  (学号)为关键字,因...
  • 使用主键和外键的“多对多”数据库关系。 该项目的目标是为一个通用的国际非政府组织创建一个完整的全栈项目的初始后端。 我们选择了亚洲,并将该非政府组织指定为亚洲非政府组织(ANGO)。 前端分为两个部分,即...
  • 数据库函数依赖关系模式范式候选键主键码PPT学习教案.pptx
  • MySQL主键跟外键

    千次阅读 2021-01-19 05:46:35
    定义主键和外键主要是为了维护关系数据库的完整性,总结一下:1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是...
  • 关系模型 超键 候选键 主键

    千次阅读 2014-02-25 14:05:34
    一、关系(二维表) 现阶段主要的商用数据库系统,如ORACLE,Sybase, DB2等,都是基于关系模型的数据库系统。关系模型应用广泛的原因之一就是它具有简单、明快的数据建模概念:以称为关系的二维表的形式结构数据。...
  • blog,主要简单介绍了在 MySQL 数据库中如何查看某张表,以及对表做一些增删改查的操作,本篇 blog 主要介绍一张表中如何设置唯一标识,以及两张表之间如何关联,即我们日常听说的主键和外键主键含义:关系型数据库...
  • 关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途: 惟一地标识一行。 作为一个可以被外键有效引用的对象。 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),...
  • 数据库原理-ER模型转换为关系模型

    千次阅读 2021-08-24 11:29:46
    ①若实体间联系是1:1,可以在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。 若实体间联系是1:n,则在n端实体类型转换成的关系模式中加入1端实体类型的键和...
  • 关系型数据库:主键知识

    千次阅读 2020-09-29 10:33:27
    关系数据库中,一张表中的每一行数据被称为一条记录。一条记录就是由多个字段组成的。例如,students表的两行记录: id class_id name gender score 1 1 小明 M 90 2 1 小红 ...
  • ER图与关系模型

    千次阅读 2022-03-25 14:24:01
    5.13 设某商业集团数据库中有3个实体集。一是商店实体集,属性有商店编号、商店名、地址等;二是商品实体集,属性有商品号、商品名、规格、单价等;...再转换成关系模式集,并指出每个关系模式主键和外
  • 对于关系表,有个很重要的约束,就是任意两条记录不能重复。不能重复不是指两条记录不完全相同,而是指能够通过某个字段唯一区分出不同的记录,这个字段被称为主键。 对主键的要求,最关键的一点是:记录一旦插入...
  • 主键和外键的区别

    千次阅读 2018-06-29 21:31:32
    一、什么是主键、外键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一...
  • 文章目录关系的特性数学定义的关系关系的特性关系不可重复候选码/候选键一个关系中可以有多个候选码/候选键主码/主键主属性与非主属性外码/外键总结:什么是关系 关系的特性 列的同质性,每一列的分量来自与同一个...
  • 快速区分主键与外键

    千次阅读 2019-10-08 20:16:57
    主键与外键的区分 主键用来唯一标识一条记录,不允许有重复,不允许为空 作用:用来保证数据的完整性 个数:only one 外键,表的外键是另一个表的主键,外键可以有重复,也可为空 作用:用来和其他表建立联系 个数:...
  • 阅读以下说明和图,回答问题1至问题4。【说明】某高校欲开发一个成绩管理系统,记录并管理所有选修课程的学生的平时成绩和考试成绩,其主要功能描述如下:1.每门课程都有3到6个单元构成,每个单元结束后会进行一次...
  • 一、什么是主键、外键:关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如学生表(学号,姓名,性别,班级)其中每个学生的学号是唯一的,...
  • 数据库函数依赖___关系模式__范式_候选键_主键_码
  • 关系模型 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。...在关系数据库中,关系是通过主键和外键来维护
  • 将E-R图转换成关系模式

    千次阅读 2019-04-26 20:49:57
    常规实体类型的映射 常规实体类型的特征 强实体,有简单属性,有复合...如果实体类型E有多个候选键,选择其中一个,作为关系模式E的主键,其他的作为备用键 实体类型E的每一个实体实例,对应关系模式E的一个元组 二...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,274
精华内容 36,109
关键字:

关系模式的主键