分析并设计网上书店数据库,绘制E-R图,网上书店具有如下功能:
1、会员的注册、登录
2、网上预订图书
3、图书信息浏览
训练技能点:
1、会将E-R图转换为表
2、理解数据规范化
4、将分析在SQL Server数据库中实现具体的表
Sql server三范式的理解:
第一范式:数组的每个属性只能包含一个值;
关系中的每个数组必须包含相同的数量的值;
关系中的每个数组一定不能相同。
第二范式:如果一个数据表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表满足第二范式。
第三范式:如果一个数据表已经满足第二范式,而且该数据表中的任何两个非主键字段的数值之间不存在函数信赖关系,那么该数据表满足第三范式。
数据库实体分析结果:
会员Users(会员编号,昵称,密码,电子邮件,等级)
等级UserGrade(等级编号,等级名称)
图书订单Orders(订单编号,会员编号,书编号,数量,总价,预定日期)
书Books(书编号,书名,作者,出版社编号,单价)
出版社Publishers(出版社,出版社名称)
分析后绘制E-R图如下:
用word把各实体关系图转化为表格;标识主键,用红色加粗字体把主键标识出来;需要在表之间体现实体之间的映射关系,即建立表的外键,用绿色加粗字体标识外键
然后建立网上书店数据库(Online_Bookstore)并插入部分数据
use master
create database Online_Bookstore
on primary
(
name='Online_Bookstore',
filename='D:\Data\Online_Bookstore.mdf',
size=10,
maxsize=20,
filegrowth=10%
)
log on
(
name='Online_Bookstore_log',
filename='D:\Data\Online_Bookstore_log.ldf',
size=1,
maxsize=10,
filegrowth=10%
)use Online_Bookstore
create table Users(
UserID int primary key not null,
UserName varchar(20) not null,
Pwd varchar(10) null,
Email varchar(40) null,
GradeID int not null
)create table Orders(
OrderID int primary key not null,
UserID int not null,
BookID int not null,
Number int not null,
OrderDate datetime not null,
OrderPrice money not null
)create table Books(
BookID int primary key not null,
BookName varchar(20) not null,
Author varchar(10) not null,
PublisherID int not null,
BookPrice money not null
)create table UserGrade(
GradeID int primary key not null,
GradeName varchar(20) not null
)create table Publishers(
PublisherID int primary key not null,
PublisherName varchar(20) not null
)--创建约束
alter table Users add constraint fk_GradeID foreign key (GradeID) references UserGrade(GradeID)
alter table Orders add constraint df_Number default 0 for Number
alter table Orders add constraint df_OrderPrice default 0 for OrderPrice
alter table Orders add constraint fk_UserID foreign key(UserID) references Users(UserID)
alter table Orders add constraint fk_BookID foreign key(BookID) references Books(BookID)
alter table Books add constraint fk_PublisherID foreign key(PublisherID) references Publishers(PublisherID)--插入数据
insert into Users(UserID,UserName,Pwd,Email,GradeID)
values(1001,'Mark','ss66##','cruo@126.com',2)
insert into Users(UserID,UserName,Pwd,Email,GradeID)
values(1002,'玛丽','458712','mali@163.com',1)
insert into Users(UserID,UserName,Pwd,Email,GradeID)
values(1003,'Sunny','sunny008','Sunny008@hotmail.com',2)
insert into Users(UserID,UserName,Pwd,Email,GradeID)
values(1004,'骄阳似火','upp8912','Hell80@topvip.com',2)
insert into Users(UserID,UserName,Pwd,Email,GradeID)
values(1005,'绿野萍踪','lypz800*','Lypz008@sohu.com',3)insert into UserGrade(GradeID,GradeName) values(1,'普通会员')
insert into UserGrade(GradeID,GradeName) values(2,'VIP会员')
insert into UserGrade(GradeID,GradeName) values(3,'钻石会员')
建立数据库关系图:
如有错误,还望指正 [抱拳]