数据库设计范式
1范式:列的原子性,列不可再拆分
2范式:表中不能描述多个信息,不能有数据沉余
3范式:引用其它表的主键信息
约束
- 非空约束not null。不能出现空值
- 主键约束(PK)primary key constraint。唯一并且不为空
- 唯一约束(UQ)unique constraint。允许为空,但不能重复
- 默认约束(DF)default constraint。默认填入什么个值,比如默认填入男
- 检查约束(CK)check constraint。检查你填入的信息是否满足需求。
- 外键约束(FK)foreign key constraint。可以做也可以不做,做的时候保证你的数据更加有效。
创建数据库
MS SQLServer每个数据库包含
1个主数据库文件(.mdf)必须
1个事物日志文件(.ldf)必须
可以包含:
任意多个次要数据文件(.ndf)
多个事物日志文件
文件组:可将多个数据文件逻辑分到一组,方便日后管理维护(备份、将表建在指定的文件组上)
关于列类型
文本类型:区分var、n
对于不带var的情况,表示不可变长度,如果赋值不够指定位数,用空格补齐
对于带var的情况,表示可变长度,如果赋值不够指定位数,以实际赋值为准
对于Unicode这种编码格式
如果带n,则每个字符占2个字节
如果不带n,则英文占1个字节,中文占两个字节
外键
对应关系:1对1、1对多、多对多
1对1的关系,这种数据存储到双方任意表里就可以
1对多的关系,将关系的数据存储到多的一方表里
多对多的关系,单独建立一个表,用于存储关系
根据关系创建出来的列所存储的信息,需要满足第3NF
示例:部门-员工的关系是 1:n
只要在员工表中建立eDid(部门ID)这个列,就已经存储了部门与员工的关系外键只是一个约束,保证数据的有效性,外键需要建立在关系列上。
脚本
脚本执行快捷键Ctrl+E
SQL主要分为DDL(数据库定义语言 建表、建库等语句)、DML(数据库操作语言)和DCL(数据库控制语言)。CreateTable、AlterTable等属于DDL,Select、Insert、Update、Delete属于DML,GRANT授权、REVOKE取消授权属于DCL。
1.创建数据库
CREATE DATABASE name
2.删除数据库
drop database name
3.创建表
Create table name(
列名 类型….
cName nvarchar(10) not null,
列表名为:cName
类型为:nvarchar(10)
不允许空:not null
)
4.删除表
Drop table name
5.增加约束
Alter table name
Add constraint CK_cname check (len(cName)>2)