美文网首页
SQL关系模型

SQL关系模型

作者: Almira_SY | 来源:发表于2019-11-29 16:47 被阅读0次
1、主键

关系表,有个很重要的约束,就是任意两条记录不能重复。不能重复不是指两条记录不完全相同,而是指能够通过某个字段唯一区分出不同的记录,这个字段被称为主键。
作为主键最好是完全业务无关的字段,我们一般把这个字段命名为id。常见的可作为id字段的类型有:
A、自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键;
B、全局唯一GUID类型:使用一种全局唯一的字符串作为主键,类似8f55d96b-8acc-4636-8cb8-76bf8abc2f57。GUID算法通过网卡MAC地址、时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的,大部分编程语言都内置了GUID算法,可以自己预算出主键。
对于大部分应用来说,通常自增类型的主键就能满足需求。我们在students表中定义的主键也是BIGINT NOT NULL AUTO_INCREMENT类型。

2、联合主键

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

对于联合主键,允许一列有重复,只要不是所有主键列都重复即可 联合主键.png 如果我们把上述表的id_num和id_type这两列作为联合主键,那么上面的3条记录都是允许的,因为没有两列主键组合起来是相同的。

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

3、外键
classes表.png studens.png

在students表中,通过class_id的字段,可以把数据与另一张表关联起来,这种列称为外键。
外键不是通过列名实现的,而是通过定义外键约束实现:

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

其中,外键约束的名称fk_class_id可以任意,FOREIGN KEY (class_id)指定了class_id作为外键,REFERENCES classes (id)指定了这个外键将关联到classes表的id列(即classes表的主键)。
一个班级可以有多个学生,在关系模型中,这两个表的关系可以称为“一对多”,即一个classes的记录可以对应多个students表的记录。

4、多对多关系
多对多关系实际上是通过两个一对多关系实现的,即通过一个中间表,关联两个一对多关系,就形成了多对多关系: classes表.png teachers表.png 中间表classes_teachers.png
5、一对一关系

有些应用会把一个大表拆成两个一对一的表,目的是把经常读取和不经常读取的字段分开,以获得更高的性能。
例如,把一个大的用户表拆为用户基本信息表user_info和用户详细信息表user_profiles,大部分时候,只需要查询user_info表,并不需要查询user_profiles表,这样就提高了查询速度。

6、索引(再议)

根据廖雪峰前辈文章学习记录:

相关文章

  • Mysql基础

    数据库类型: 层次模型; 网状模型; 关系模型;(常用) Sql(Structured Query Languag...

  • SQL关系模型

    1、主键 关系表,有个很重要的约束,就是任意两条记录不能重复。不能重复不是指两条记录不完全相同,而是指能够通过某个...

  • Spark SQL

    Spark SQL 该模型允许你使用SQL或者DataFrame或DataSet进行关系型查询 Spark SQL...

  • 三篇文章了解 TiDB 技术内幕-说计算

    关系模型到 Key-Value 模型的映射 在这我们将关系模型简单理解为 Table 和 SQL 语句,那么问题变...

  • 数据模型和查询语言 -- 关系模型与文档模型(一)

    在今天,最著名的数据模型莫过于SQL了吧。这是一个Codd在1970年提出的关系模型:数据被组织成关系(称为SQL...

  • SQL简介

    SQL简介SQL是structure Query Language的缩写,它是使用关系模型的数据库应用语言。SQL...

  • mysql复习-理论

    选择归纳 关系模型理论出现:1970年-Codd(IBM) SQL语言最早提出的公司:IBM 关系模型三要素: 1...

  • 数据结构

    SQL就是访问和处理关系数据库的计算机标准语言 数据模型: 1.层次模型 2.网状模型 3.关系模型 主流数据库 ...

  • 关系型SQL与非关系型NoSQL数据库

    001 关系型 基于ACID模型例如:Oracle,MySQL,DB2,sybase,Microsoft SQL ...

  • sql语法以及高级特性

    sql语法 表与列 创建表 在关系模型中,每个关系是一个数据实体。在sql中可以通过create table命令创...

网友评论

      本文标题:SQL关系模型

      本文链接:https://www.haomeiwen.com/subject/kxnwwctx.html