数据(蓄水)库作业批改之三——56.数据库设计(铁路购票系统)

数据(蓄水)库作业批改之三——56.数据库设计(铁路购票系统)

一.作业要求

请根据你对铁路购票业务流程的理解,完成铁路购票系统的数据库设计,以E-R模型展示你的设计方案并实现为数据库,具体要求请下载“课程资料中的“数据库实验报告模板.doc”。最终提交你的实验报告WORD版。要求Word文件更名为“”学号姓名数据库设计实验报告“的格式

二.作业具体要求

实验目的:

1、根据需求完成数据库设计建模,熟练使用E-R模型;

2、在数据库设计方案基础上实现为数据库。

实验任务:

1、根据业务流程抽象出相关实体及关系;

2、使用E-R模型实现设计方案;

3、基于E-R模型实现为可运行的数据库。

请完成以下内容:

1、以E-R模型展示你的设计方案,要求包含完整的设计,有实体名称、实体属性、主键,并在图中体现实体间的关系;

注:E-R模型,可以手绘后拍照,也可以直接在WORD中绘制,还可以使用Visio绘制,如果愿意深入学习,可以尝试使用ERWIN等数据库设计工具完成(该软件可网络搜索试用版)。以上方式任选其一,请展示你的方案于下方空白处

三.知识要点

对E-R模型的了解与认识到熟悉运用;

数据库基本代码的运用;

对范式1NF,2NF,3NF的了解与实际运用(重难点);

其他:对买票系统的了解以及逻辑性。

四.评判RULES

设计(3')     

评分细则如下:      

E-R图例规范得1分,否则给0.5,有设计方案就至少0.5,所谓规范是E-R图的图例是否应用了Chen方法或Crow's foot方法中的图例,如果规范采用则给1分1,否则0.5;         

实体及联系设计恰当给1分,基本原则是实体本身反映一类事物的本质;        

范式设计合理得1分,如有违反范式,特别是二和三范式的,得0.5分。       

代码(2')     

评分细则如下:      

完全没有代码直接给0,如有代码,参照以下评判规则:      

提供了代码,并且和实体能够对应得1分,如有缺失代码或者单纯拷贝作业代码并没有准确更改,酌情给分0.5。         

代码正确运行得1分,如果运行中有错误,给0.5分。          

复议:对于评判不准的部分,可自主寻找志愿者中的搭档,尝试使用双评方式,即两个评判人对同一份作业进行评判,最终经过两位评判者协商确定被评判人的成绩,这种方法仅在对设计作业难以清除判断的情况下使用。      

五.参考答案(因为一千个读者眼里有一千个哈姆雷特)

“E-R”模型(因为不太好处理图形= =请谅解):

代码:

Use master
GO

If exists (select * from dbo.sysdatabases where name = 'Ticket_system') 
drop database Ticket_system
GO

create database Ticket_system
on
     (name = 'Ticket_system_data', 
          filename = 'e:\Ticket_system_data.mdf',
         size = 10mb,
         maxsize = 50mb,
         filegrowth = 10%)
log on
     (name = 'Ticket_system_log',
      filename = 'e:\Ticket_system_log.ldf',
          size = 5mb,
          maxsize = 10mb,
      filegrowth = 2mb)
GO

create table Train
(    train_number char(5) not null primary key,
    first_station int not null,
    last_station int not null,
    departure_time datetime not null,
    arrival_time datetime not null
)
GO

insert into Train
    values('G1', 0, 2, '10:30:00', '14:45:00')
insert into Train
    values('G2', 3, 5, '15:30:00', '19:45:00')
insert into Train
    values('G3', 6, 9, '9:45:00', '14:00:00')
insert into Train
    values('G4', 10, 13, '14:45:00', '19:00:00')
insert into Train
    values('G5', 14, 15, '13:00:00', '16:00:00')
insert into Train
    values('G6', 16, 17, '17:30:00', '20:30:00')
GO
select* from train
create table Point
(    number int not null primary key,
    name char(10) not null,
    dwell_time time not null,
    pre_station int null,
    next_station int null
)
GO

insert into Point
    values(0, '北京', '00:00:00', null, 1)
insert into Point
    values(1, '泰安', '00:10:00', 0, 2)
insert into Point
    values(2, '上海', '00:45:00', 2, null)
insert into Point
    values(3, '上海', '00:00:00', null, 4)
insert into Point
    values(4, '苏州北', '00:05:00', 3, 5)
insert into Point
    values(5, '沧州北', '00:15:00', 4, 6)
insert into Point
    values(6, '北京', '00:45:00', 5, null)
/*以此类推*/
GO
select* from Point
create table Message
(    person_id char(18) not null,
    train_id char(5) not null,
    departure_station int not null,
    arrival_station int not null,
    ticket_price float not null,
    time_spent time not null,
    seat_number char(5) not null,
    purchase_time datetime not null,
    ticket_id char(18) not null primary key
)
GO

insert into Message
    values('612323182903249912', 'G2', 4, 5, 212.50, '02:15:00', '05A12', '2018-04-10', '000000000000000001')
insert into Message
    values('612323182903249912', 'G1', 0, 3, 425.00, '04:15:00', '06B12', '2018-04-10', '000000000000000002')
insert into Message
    values('612323182903249912', 'G3', 7, 8, 125.00, '01:00:00', '12A14', '2018-04-14', '000000000000000003')
GO
select* from Message 
create table Person
(    user_id char(18) not null primary key,
    user_name char(10) not null,
    user_sex bit not null
)
GO
select* from Person 
insert into Point
    values('612323182903249912', '王子一', 1)
GO

(以上为某孙同学提交的改写后的作业,值得参考一下!)

六.作业情况

 (此图得点开才口以!)

七.作业评价

具体详见表。

总体来说大家对范式比较了解,个别不太会用。不过没关系,小编会把其解释再详细说一遍。

对于大家E-R模型没有满分小编表示理解与同情==

八.补充说明

关系数据库中的几种设计范式

1 第一范式(1NF)
在任何一个 关系数据库中,第一范式(1NF)   是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
在第一范式(1NF)中表的每一行只包含一个实例的信息。

简而言之,第一范式就是无重复的列。

2 第二范式(2NF)
第二范式(2NF) 是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。这个唯一属性列被称为主关键字或主键、主码。
第二范式(2NF)要求实体的属性完全依赖于主关键字。

简而言之,第二范式就是非主属性非部分依赖于主关键字。

3 第三范式(3NF)
满足第三范式(3NF)  必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

简而言之,第三范式就是属性不依赖于其它非主属性。

例子:

https://www.cnblogs.com/miaomiaomiaomia/p/9126976.html

九.其他

祝大家期末取得好成绩!!!

猜你喜欢

转载自www.cnblogs.com/miaomiaomiaomia/p/9126990.html
今日推荐