数据库设计
信息化现实世界
-
实体
现实世界中客观存在的并课相互区别的事务或概念
-
属性
实体所具有的某种特性。一个实体可以使用许多属性进行描述。属性的具体取消值称为属性值。
-
实体标识符
唯一标识实体中的每一行的属性或属性的组合
-
联系及联系类型
实体不是孤立存在的,实体间有着相互联系
关系数据模型
- 表中的每列都是不可能再细分的基本数据项
- 每列的名字不同,数据类型相同或者兼容
- 行的顺序无关紧要
- 关系中不能存在完全相同的俩行
创建数据库
- 主数据库master
- 模板数据库 model
- msdb数据库
- 零时数据库 tempdb
- 示例数据库
文件
-
主数据文件 mdf
用来存储数据库的系统表和数据库对象,保存在操作系统下
-
次数据文件 ndf
用来存储用户数据和数据库对象,保存在操作系统下,如果主数据文件大得足够容纳数据库中所有得数据时,数据库不一定要有此数据文件。
-
事务日志文件 ldf
一个数据库至少有一个事务日志文件,也可以有多个。事务日志文件记录了在数据库中发生的所有修改和导致这些修改的事务,保存所有可用来恢复数据库的事务信息。事务日志文件最小为512kb。事务日志文件得理想容量占数据库大小的25%~40%。
文件组(filegroup)
是文件的逻辑集合,用来存储数据文件和数据库对象。一个文件或者文件组只能用于一个数据库,不能用于多个数据库。次数据文件或者数据库对象(表,索引)只能存放在一个文件组中,不可以再存放在其他文件组中。文件组不适用于事务日志。
创建数据库
create database 数据库名 charset=utf8;
数据表设计
表是一种用于存储数据的数据库对象。表中的列名必须唯一。
create table 表名 (
列名 数据类型 是否为空 是否唯一 初始值 增量(可以为负数)
)
--null | not null 该列是否允许为空值
--identity 是否唯一
--seed identity 的初始值
--increment 增量
--on 指出在哪个文件组
删除数据表
drop table table_name
创建/删除 主键约束
--在创建表的同时创建主键PK_Department
create table Department (
constraint PK_Department primary key (id)
)
创建删除外键约束
--外键约束名为 FK_Stucou_Student 表stucou表stuno列值要参照student表stuno列值
alter table stucou add constraint FK_Stucou_Student foreign key (stuno) references student (stuno)
--使用alter table 语句删除course 表名为FK_Course_Department 的外键约束
alter table course drop constraint FK_Course_Department
创建/删除唯一约束
--修改表
alter table tablel_name add constraint constraint_name check (check_expr)
索引
-
聚集索引
只允许创建一个聚集索引
-
非聚集索引
不会对表和视图按照索引列值进行物理排序,最多可建立250个非聚集索引,或者249个非聚集索引和1个聚集索引。
unique:创建唯一索引
clustered:创建聚集索引
nonclustered:创建非聚集索引
视图
视图是一个虚拟表,它保存select语句的定义,使用户查看数据库中数据的一种方式。
游标
创建基本游标,
-
使用declare cursor语句声明游标
declare crscourse cursor for select * from course ordre by couno
-
使用open语句打开游标。
open crscourse
-
使用fetch语句读取并返回游标位置数据
fetch next from crscourse
-
修改游标位置所在行的数据。将当前数据的限选人数限制在22
update course set limitnum=22 where current of crscourse
-
使用close语句关闭游标
close crscourse
-
使用deallocate语句释放游标
deallocate crscourse