MySQL数据表管理(上)
一、创建数据表
1.数据表的设计及ER图
(1)数据库设计的基本步骤:
① 需求分析阶段:分析客户的业务和数据处理需求
② 概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整
③ 详细设计阶段:将E-R图转换成多张表,进行逻辑设计,并应用数据库设计的三大范式进行审核
④ 代码编写阶段:选择具体数据库进行物理实现,并编写代码实现前端应用
(2)模拟QQ游戏大厅项目:
① 需求分析:系统需要记录哪些信息?
② 数据表:游戏表、玩家表、分数表
③ 每个表的字段:
游戏表(编号、名称、类型、难度)
玩家表(QQ号、昵称、性别、生日、手机号)
分数表(游戏编号、玩家QQ、得分)
(3)E-R(Entity-Relationship)实体关系图:
符号 | 含义 |
实体,一般是名词 | |
属性,一般是名词 |
|
关系,一般是动词 |
QQ游戏大厅项目E-R图:
2.使用范式检查数据表设计合理性
(1)什么是范式?
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。(范式就是一种规范,我们用这种规范去衡量我们数据库设计的到底好不好,衡量的是数据库是否有冗余这个指标)
(2)Dr E.F.Codd最初定义了规范化的几个级别,范式用以定义具有最小冗余的表结构。
(3)第一范式(1st NF)
如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1st NF)。(第一范式是确保每列的原子性)
玩家QQ | 地区 |
12301 | 中国北京 |
12302 | 美国纽约 |
12303 | 英国伦敦 |
12304 | 日本东京 |
↓
玩家QQ | 国家 | 城市 |
12301 | 中国 | 北京 |
12302 | 美国 | 纽约 |
12303 | 英国 | 伦敦 |
12304 | 日本 | 东京 |
(2)第二范式(2st NF)
如果一个关系满足1NF,并且除了主键以外的其他列,都完全依赖于该主键,则满足第二范式(2NF),(第二范式要求每个表只描述一件事情)
(3)第三范式(3rd NF)
如果一个关系满足2NF,并且除了主键以外的其它列都不传递依赖于主键列,则满足第三范式(3NF)。(第三范式要求表中不存在冗余字段)
3.使用命令窗口创建数据表
使用CREATE TABLE 表名;来创建数据表。
如:create table table_name
(
col_name1 col_type [not null],
col_name2 col_type [not null]
);
4.为列添加主键约束
(1)约束的概念和作用:约束保证了数据的完整性,相当于数据的检察官,用于检查数据是否正确,其作用就是保证数据的正确性。
(2)主键约束作用:保证实体的完整性。即在某一列上如果我们添加了主键约束,那么这个列就不能出现重复的值,并且这个列上也不能出现空值。
例:为玩家表的玩家QQ这一列添加主键约束
create table user
(
user_qq varchar(20) not null primary key,
user_name varchar(50) not null,
user_sex char(2) not null default '男',
user_birthday date not null,
user_phone char(11) not null
);
5.为列添加检查约束(对于MySQL数据库来说检查约束不起作用)
(1)检查约束作用:保证域完整性。(即保证某一列上的数据必须符合某种格式或者符合某个范围)
例:为游戏表添加检查约束
create table game
(
game_uid int not null primary key check(game_uid > 0) auto_increment,
game_name varchar(50) not null,
game_type varchar(20) not null
);
6.为列添加外键约束
(1)外键约束的作用:保证引用完整性。
例:为分数表添加外键约束:
create table score
(
score_uid int not null primary key,
user_qq varchar(20) not null references user(user_qq),
game_uid int not null references game(game_uid)
);
7.为列添加默认约束
(1)概念:就是为某一列填写一个默认值,当我们这个列上没有值的时候,默认为其填上一种类型的值。作用:保证域完整性
如:为玩家表的user_sex这一列添加默认约束。见主键约束。
8.为列添加自增列约束
(1)作用:保证实体完整性。(因为这个列上的值,自动增加,既然是自动增加就不会有重复的值,默认从1开始自增)
如:为游戏表添加自增列,见游戏表。