SQL server 数据库设计
--数据库设计
--数据库设计规范三范式
--第一范式是对属性的原子性,不可分解
--分开成多个属性
--第二范式:是对记录的唯一性,要求记录有唯一标识,实体唯一性
--问题:数据冗余,删除不当会导致丢失实体
--方法分开成几个表 实体表 关联表
--第三范式 :要求任何字段不能出其他字段派生出来,他要求字段没有冗余,既不存在传递依赖
--问题:会产生数据冗余
--解决方法:拆分成两个表
--表关系(一对一,一对多,多对多)
--—对多 (专业表,学生表)
create table Profession
(
ProId int primary key identity(1,1),
ProName varchar(50) not null
)
create table Student
(
StuId int primary key identity(1,1),
ProId int not null, --专业编号(用于关联专业表)
StuName varchar(50) not null,
StuSex varchar(5) not null
)
insert into Profession (ProName) values('语文')
insert into Profession (ProName) values('计算机')
insert into Student(ProId,StuName,StuSex) values(1,'刘备','男')
insert into Student(ProId,StuName,StuSex) values(2,'关羽','男')
insert into Student(ProId,StuName,StuSex) values(3,'张飞','男')
--一对一的关系是特殊的一对多的关系
--符合一对一的两个表可以合成一个表
--一对一注意不要把对应的主键设置为自动增长
--多对多的关系(学生信息,课程信息)
--(添加一张表表示关系)
create table Student
(
StuId int primary key identity(1,1), --学生编号
StuName varchar(50) not null,
StuSex char(2) not null
)
create table Course
(
CourseId int primary key identity(1,1),
CourseName varchar(30) not null ,
CourseContent text
)
create table Exam --(两表之间的关系 关系表 多对多)
(
ExamId int primary key identity(1,1),
StuId int not null,
CourseId int not null,
Scorse int not null
)