精华内容
下载资源
问答
  • 关系模型——主键、外键、索引

    千次阅读 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);

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

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

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

    主键(PRIMARY KEY)


    - 描述

    能通过某个字段唯一区分出不同的记录,这个字段被成为主键

    - 特性

    a.主键必须包含唯一的值
    b.主键列不能包含NULL值
    c.每个表都应该有一个主键,并且每个表只能有一个主键

    - 选取主键的基本原则

    不使用任何业务相关的字段作为主键

    身份证号、手机号、邮箱地址均不可用作主键

    作为主键最好是完全与业务无关的字段,通常将这个字段命名为id,常见的id字段类型:

    a.自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数

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

    - 联合主键

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

    联合主键并不常用

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

    ctrl + 放大页面

    ctrl - 缩小页面

    参考文章:

    廖雪峰SQL教程 关系模型

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

    展开全文
  • 文章目录关系的特性数学定义的关系关系的特性关系不可重复候选码/候选键一个关系中可以有多个候选码/候选键主码/主键主属性与非主属性外码/外键总结:什么是关系 关系的特性 列的同质性,每一列的分量来自与同一个...

    关系的特性

    在这里插入图片描述
    列的同质性,每一列的分量来自与同一个值域

    数学定义的关系

    在这里插入图片描述

    关系的特性

    在这里插入图片描述
    每一列属性都满足第一范式,也就是属性不可再分的特性
    在这里插入图片描述
    关系满足列无关性和行无关性,也就是说每条记录,和每列属性,不因为所在的位置不同而让两个关系不同

    关系不可重复

    在这里插入图片描述
    理论上来说,关系是不可以重复的,也就是不应该有所有属性相同的记录或元组.

    候选码/候选键

    在这里插入图片描述
    在关系中,一个属性或属性组,可以用来唯一标识一个元组,若从该属性中去掉任何一个属性,它就不具有这个特性了,这样的属性组就叫做候选码.

    一个关系中可以有多个候选码/候选键

    在这里插入图片描述

    主码/主键

    在这里插入图片描述
    当有多个候选码时,可以选择一个作为主键.
    DBMS使用主键为主要线索管理关系中的多个元组

    主属性与非主属性

    在这里插入图片描述
    包含在任何一个候选码中的属性称为主属性,而其他属性被称为非主属性
    最简单的候选码只包含一个属性
    最极端的,所有属性构成这个关系的候选码,称为全码(All-Key)

    外码/外键

    在这里插入图片描述
    关系R中的一个属性组,它不是本关系的候选码,但它与两一个关系的S的候选码对应,就称这个属性组为R的外码/外键.
    两个关系通常是靠外键关联起来的.

    总结:什么是关系

    如图
    在这里插入图片描述

    展开全文
  • 我们已经知道,关系数据库是建立在关系模型上的。而关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表。 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 表的每一列称为字段...
  • 关系模型 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。 字段定义了数据类型(整型、浮点型、字符串、日期等)。NULL是...
  • 数据库主键与外键的关系,通俗易懂

    万次阅读 多人点赞 2017-12-16 16:13:08
    关系型数据库的一条记录有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如学生表(学号,姓名,性别,班级)其中每个学生的学号是唯一的,学号就是一个主键课程表...
  • 关系模型 超键 候选键 主键

    千次阅读 2014-02-25 14:05:34
    现阶段主要的商用数据库系统,如ORACLE,Sybase, DB2等,都是基于关系模型的数据库系统。关系模型应用广泛的原因之一就是它具有简单、明快的数据建模概念:以称为关系的二维表的形式结构数据。使数据库的结构和相关...
  • 主键的要求,最关键的一点是:记录一旦插入到表主键最好不要再修改,因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响。 选取主键的一个基本原则是:不使用任何业务相关的字...
  • 什么是主键和外键?

    万次阅读 多人点赞 2018-07-02 09:06:59
    一、什么是主键、外键:关系型数据库的一条记录有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一...
  • 数据库函数依赖___关系模式__范式_候选键_主键_码
  • 文章目录关系数据库关系操作基本关系操作关系数据库语言的分类关系模型的完整性实体完整性(Entity Integrity)参照完整性(Referential Integrity)用户定义完整性(User-defined Integrity)E-R图向关系模型的转换...
  • 关系模式中的各种码(键/关键字)

    千次阅读 2021-03-15 21:02:18
    码,又称键、关键字,英文是key。唯一标识实体的属性集称为码。 ...全码:一个候选码包含关系模式中的所有属性,则该候选码为全码 举个例子: 关系Student(学号,姓名,年龄,院系,班级)...
  • 在基于关系型数据库设计时候,通常要为每张表指定一个主键,所谓主键就是能够唯一标识表某一行记录的属性或属性组,一个表只能有一个主键,但可以 有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保...
  • 什么是主键、外键

    千次阅读 2017-07-18 21:54:48
    关系型数据库的一条记录有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键  比如  学生表(学号,姓名,性别,班级)  其中每个学生的学号是唯一的,学号就是一个...
  • 刚接触关系型数据库的同学,会听过主键和外键的概念。这是关系型数据库的基本概念,需要清楚理解。今天我就以简洁的语言总结一下这个概念。  主键。一句话概括:一张表,可以用于唯一标识一条记录的字段组(或者...
  • 关系模型Relational_Model,主键Primary_Key,外键Foreign_Key【关系数据库SQL教程2】
  • 两者在可空、唯一性、排序等表面特征上并没有什么区别,而且主键都有唯一索引,所以常被人问起它们之间有什么区别。简要地说,主键和唯一索引,或者键和索引之间的最主要区别在于:键是一个逻辑层面的概念,涉及到...
  • ER模型关系模式

    千次阅读 多人点赞 2015-10-25 12:11:28
    ER图的主要成分为实体类型和联系类型,转换算法将实体类型和联系类型转换为关系模式。转化为关系模式,主要确定3部分内容,关系模式的名称,属性,码。 转换分为两个步骤:1.实体的转换。2.关系模式的转换; 1....
  • 关系型数据库和主键外键

    千次阅读 2021-01-11 21:55:07
    一对一:既可以把表A的主键充当表B的外键,也可以把表B的主键充当表A的外键(一个人只有一把钥匙,一把钥匙只给一个人) 一对多:把表A的主键充当表B的外键(一个父亲有几个孩子,一个孩子只有一个父亲) 多对多:...
  • 复合主键(单表多个主键) 复合主键:数据库表的主键由两个及以上的字段组成。 例如: CREATE TABLE `asm_device_config_info` ( `asmModel` varchar(32) NOT NULL COMMENT '自助机型号', `...
  • 什么是外键表,什么是主键表?

    千次阅读 2017-03-17 17:04:42
    表1属性有:typeid(主键...表1是主键表、表1的主键字段在表2做外键、而表1自己却没有外键表2是外键表有一个依赖表1typeid的字段、作为外键、取值必须是其依赖主键表表1中主键字段有的值 ---------------------------
  • 一:补充知识 E-R图向关系模式的转换需要考虑的是:...一个实体对应一个关系模型,实体的名称即是关系模型的名称,实体的属性就是关系模型的属性, 实体的码就是关系模型的码。 实体转换时需要注意的: 1:属性域的问题。 2:
  • 数据库,一对一关系:从表的主键既是外键。 CREATE TABLE hasbend( -- 创建主表 hid INT PRIMARY KEY auto_increment, -- 指定字段 hname VARCHAR(50) ); ALTER TABLE hasbend -- 修改表名 REMOVE TO ...
  • 显示A表的记录,该表与B表如果通过主键关联,一对一的关系如下: /** * @return array relational rules. */ public function relations() { // NOTE: you may need to adjust the relation name and the related...
  • 一、关系的实现在实体关系模型中,我们知道有三种关系:一对一、一对多、多对多。这只是概念上的关系,但是在真实的关系数据库,我们只有外键,并没有这三种关系,那么我们就来说一说在关系数据库管理系统,怎么...
  • 在教学,大多实例都是主键由一列构成,所以也可以简单地说主属性与主键没有什么区别。  第三范式的定义:如果关系模式R的所有非主属性对任何候选关键字都不存在传递依赖,则称关系R是属于第三范式的。记作R 3...
  • 数据:数据就是数据库存储的基本数据,比如学生的学号、学生的班级 数据库:存放数据的仓库 数据库管理系统:数据库软件,如MySQL、Oracle 数据库系统:数据库+数据库管理系统+应用程序+数据库管理员(大佬) 实体...
  • ER图转关系模型

    2021-03-25 14:06:30
    (1)实体类型的转换 将每个实体类型转换成一个关系模式,实体的 属性 即为关系的 属性,实体标识符即为关系的键。 (2)联系类型的转换 ...示例:该ER图转换为关系模型 商店 和 职工是一对多关系,一个商店有多个
  • 【SQL基础】关系模型 —— 外键

    千次阅读 2020-02-27 17:32:05
    外键(FOREIGN KEY) - 描述 通过一个表的指定字段,可以把数据与另一个张表关联起来,这种列成为外键

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 114,510
精华内容 45,804
关键字:

关系模型中主键是什么