十、数据库设计
10.1、E-R模型
数据库能够有效存储现实世界中有意义的数据,通过E-R图能够更加有效地模拟现实世界
✏️ E-R 模型的基本元素是 : 实体、联系和属性
✨ E 表示 entry, 实体 : 描述具有相同特征事物的抽象
✨ 属性 : 每个实体的具有的各种特征称之为属性
✨ R 表示 relationship, 联系 : 实体之间存在多种关系 关系的类型包括一对一,一对多,多对多
◆ 举例说明
✨ 学生 就是一个实体 其具有的属性为 : 学号、姓名、年龄、班级等
✨ 学生与学生之间存在角色关系,组长和组员,他们之间有一对多的关系
10.1.1、一对一
实体A对实体 B 为 1 对 1, 则在表 A 或表 B 中创建一个字段,存储另一个表的主键值
10.1.2、一对多
实体A对实体B为1对多: 在表 B 中创建一个字段1存储表 A 的主键值
10.1.3、多对多
实体A对实体 B 为多对多 : 新建一张表 C, 这个表只有两个字段 一个用于存储 A 的主键值,一个用于存储 B 的主键值
10.2、主键与外键
10.2.1、概念介绍
主键 | 外键 | |
---|---|---|
作用 | 用来保证数据完整性 | 用来和其他表建立联系 |
定义 | 唯一的标识一条记录,不能重复,不能为空 | 一表的属性是另一表的主键,可以重复,不能为空 |
个数 | 一个表主键只能有一个 | 一个表可以有多个外键值 |
10.2.2、设置主键
◆ 语法格式
在创建数据库表时,create table 中指定主键
字段名 数据类型 PRIMARY KEY
◆ 举例说明
# 创建班级表(班级编号,班级名称),以班级编号为主键
create table class(
id int unsigned primary key auto_increment,
name varchar(10)
);
10.2.3、删除主键
◆ 语法格式
alter table 数据表名 drop primary key;
◆ 举例说明
alter table class drop primary key;
10.2.4、设置外键
◆ 语法格式
在创建数据库表时,create table 中设置外键
constraint 外键名 foreign key(自己的字段) references 主表(主表字段)
◆ 举例说明
例: 创建学生表 以班级编号关联超级表
create table class(
name varchar(10),
class_id int unsigned,
constraint stu_kf foreign key(class_id) references class(id)
);
10.2.5、删除外键
◆ 语法格式
# 删除表student的stu_ibfk_1外键
alter table student drop foreign key stu_fk;
10.3、索引
10.3.1、索引概念
索引 | |
---|---|
作用 | 提供查询排序 |
定义 | 快速查找特定值的记录 |
个数 | 一个表主键只能有一个 |
10.3.2、设置索引
◆ 语法格式
表已存在的时候创建索引
create index 索引名称 on 表名(字段名称(长度));
◆ 举例说明
create index name_index on create_index(name(10));
10.3.3、删除索引
◆ 语法格式
drop index 索引名称 on 表名;
◆ 举例说明
drop index name_index on create_index;
10.3.4、案例准备
右键点击某个数据库→运行 sql 文件→选择 test_index.sql→ 点击开始
# 开启运行时间监测
set profiling=1;
# 查找第一万条数据test10000
select * from test_index where title='test10000';
# 查看执行的时间
show prifiles;
# 为表test_index的title列创建索引
create index title_index on test_index(10));
# 执行查询语句
select * from test_index where title='test10000';
# 查看执行的时间 12. show prifiles;
10.3.5、索引
说明: 可以大幅度提高查询语句的执行效率
注意: 如果大量增加索引设置,会严重影响除数据查询操作以外的其他操作(增/删/改)的操作,不方便过多添加.