NBA选秀系统数据库模型一、需求分析(1)、可行性需求分析需求分析是指准确了解和分析用户的需求,这是最困难、最费时、最复杂的一步,但也是最重要的一步。
需求分析是整个设计过程的基础,它决定了以后各步设计的速度和质量。
进行数据库设计首先必须准确了解与分析用户需求(包括数据与处理)。
NBA作为世界上水平最高的篮球俱乐部联盟,深受广大篮球爱好者的追捧,而一年一度的NBA 选秀活动,更成为球迷关注的焦点。
作为专门的NBA选秀数据库,一定会满足大众的信息需求。
(2)具体的系统信息选秀系统信息包括三个方面,其具体功能如下:A.新秀球员信息:包括球员姓名、年龄、籍贯、身高、顺位以及司职位置;新秀球员信息功能包括对球员信息的录入、删除和查询,以及被那个球队选中、选秀信息等。
B.NBA球队信息:包括球队名称、所在城市、上赛季战绩、球队主教练;NBA球队信息功能还包括对球队信息的录入、删除和查询,以及所选新秀、选秀信息等。
C.选秀信息:选秀信息包括新秀姓名、签约球队、入队时间、合同时间、合同金额、有无保障;选秀信息功能还包括各项数据的录入、删除和查询。
(3)具体的软件信息在开发过程中,按照软件工程的步骤,从设计到开发采用了面向对象的思想和技术,采用了SQL SERVER 2008数据库服务器,运用c/s技术,使得本系统可以方便的和其他子系统进行数据交换。
同时,注意从软件的图形应用界面上优化软件质量,使得本系统具有很强的可操作性。
二、概念结构设计概念结构设计是指对用户的需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,是整个数据库设计的关键。
根据各种信息的内容以及它们之间的关系,该数据库系统的E-R图如下:三、逻辑结构设计逻辑结构设计是将抽象的概念结构转化为所选用的DBMS支持的数据模型,并对其进行优化。
关系模式中,各实体所定义的属性如下:1.player(新秀球员信息)包括以下属性:顺位、姓名、籍贯、年龄、身高、位置2.nbateam(NBA球队信息)包括以下属性:球队名称、所在城市、上赛季排名、主教练3.xuanxiu(选秀信息)包括以下属性:球员姓名、签约球队、入队时间、合同时长、合同金额、有无保障选秀信息情况表(xuanxiu):四、数据库物理设计数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:1.确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;(1)关系数据库的存取方法:采用索引方法,主要是B+树索引方法。
(2)数据库的存储结构:录入数据采用表格方式,限制录入数据类型及取值范围以保证数据的完整性及准确。
由于条件不允许,本系统没有将表和索引放在不同的磁盘,没有能够实现磁盘驱动器并行工作,降低了物理I/O读写的效率。
为了改进系统的性能,我选择把比较大的表分放在两个磁盘上,以加快存取速度。
2.对物理结构进行评价,评价的重点是时间和空间效率以及安全性。
评价物理结构:(1)数据完成的时间性:如成绩的录入,仅当师资科录入教学进程,教务科分发教师教学任务安排之后,各系方可录入成绩。
(2)数据安全性:本系统采用二级安全保障:第一级:依赖于网络本身对用户使用权限的规定。
第二级:在程序模块中通过使用密码控制功能对用户使用权限加以限制。
五、数据库实施在数据库实施阶段,设计人员运用DBMS提供的数据库语言(如SQL)及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
1.创建新数据库:打开SQL工具“查询分析器”在查询窗口中键入下列SQL语句:create database NBAxuanxiu执行上述SQL语句即可新建一名为NBAxuanxiu的数据库2.创建数据表:要创建的数据表分别是:player、nbateam、xuanxiu(1)创建player数据表:A新建查询窗口B在查询窗口中键入下列SQL语句create table player ( //创建球员信息表pid char(10) primary key, not null, //新秀顺位pname char(20) not null, //球员姓名phome char(20), //球员籍贯page char(10), //球员年龄phight char(10), //球员身高psite char(10), //球员位置)执行上述SQL语句即可创建户信息窗口相关表格如下:(附player表数据)(2)创建nbateam数据表:create table nbateam ( //创建NBA球队信息表tname char(50) primary key, not null, //NBA球队名称tcity char(50) //球队所在城市tlevel char(10) //上赛季战绩tcoach char(30) //主教练姓名)执行上述SQL语句即可创建管理员信息表相关表格如下:(附nbateam表数据)(3)创建xuanxiu数据表:create table xuanxiu( //创建选秀信息表pname char(20) primary key, not null //球员姓名tname char(10) not null, //签约球队intime date //入队时间zongtime char(5) //合同时长money char(10) //合同金额baozhang char(2) //合同有无保障)执行上述SQL语句即可创建图书信息表相关表格如下:(附xuanxiu表数据)六、数据库运行和维护1. 数据定义:基本表的创建、修改及删除;视图的创建和删除。
(1)基本表的创建与删除(例:player表):A、创建(修改)基本表create table player ( //创建球员信息表pid char(10) primary key, not null, //新秀顺位pname char(20) not null, //球员姓名phome char(20), //球员籍贯page char(10), //球员年龄phight char(10), //球员身高psite char(10), //球员位置)B、删除基本表drop table player cascade(2)视图的操作:数据库视图的定义(创建和删除)、查询和更新A、创建视图:create view pidViewasselect pid pname phome page phight psitefrom playerwhere phome =‘美国’with check option;B、对视图查询:找出所有来自美国的新秀的顺位和姓名:select pid pnamefrom pidView;C、删除视图:删除前面定义的pidView视图。
Drop view pidView2.数据操作:即数据库查询操作(单表查询、连接查询、嵌套查询)(1)单表查询A、查询顺位(pid)为03的球员姓名(pname):select pname,pidfrom playerwhere pid=03B、查询顺位(pid)前十位的球员所有信息:(top)select top 10 *from playerC、查询所有新秀的籍贯(phome):(distinct)select distinct phomefrom playerD、查询球员年龄(page)在21-23岁之间的球员信息:(between)select*from playerwhere page between 21 and 23E、查询所有位置(psite)为控球后卫、得分后卫的球员姓名(pname):(in)select pnamefrom playerwhere psite in('得分后卫','控球后卫')F、查询所有新秀的平均年龄(avg)select AVG(page)'平均年龄'from playerG、把新秀顺位的后10位按降序排列:select top 10 *from playerorder by pid desc(2)连接查询A、查询法国球员被哪个球队选走:select nbateam.tnamefrom nbateam,playerwhere player.phome='法国'B、查询球员姓名(pname)为保罗-乔治的顺位(pid)和签约球队(tname):select player.pid,xuanxiu.tnamefrom player,xuanxiuwhere player.pname='保罗-乔治'and xuanxiu.pname='保罗-乔治'(3)嵌套查询查询埃文-特纳的选秀信息:select*from xuanxiuwhere pname=(select pnamefrom playerwhere pname='埃文-特纳')3、数据库的安全性(1)创建与删除数据库登陆账户、用户名、数据库角色A、创建SQLServer身份验证的登录账户BOBO、小爬爬、吉吉EXEC sp_addlogin ‘BOBO’,‘123’,‘A’EXEC sp_addlogin ‘小爬爬’,‘123’,‘A’EXEC sp_addlogin ‘吉吉’,‘123’,‘A’B、创建数据库用户EXEC sp_adduser ‘小爬爬’EXEC sp_adduser ‘吉吉’EXEC sp_adduser ‘BOBO’, ‘BOBO’, ‘managers’C、建立数据库角色EXEC sp_addrole ‘managers’D、删除SQLServer身份验证的登录账户‘吉吉’EXEC sp_droplogin ‘吉吉’E、从当前数据库中删除用户‘吉吉’EXEC sp_dropuser ‘吉吉’(2)授权与收回操作A、把对表player的insert权限授予用户大力,并允许他再将此权限授予其他用户。
grant inserton table playerto 小爬爬with grant optionB、把查询表player和修改nowprice属性的权限授给用户小爬爬。
grant select,update(nowprice)on table playerto 小爬爬C、把用户大力查询表player权限收回。
revoke selecton table playerfrom 小爬爬cascade4、数据库的完整性对于player表:player (pid、pname、page、phight、psite),pid的值应该在0和10之间:Create table player (pid char(10) primary key, not null,pname char(20) not null,phome char(20) not null,page char(10)not null,phight char(10)not null,psite char(10) not null,check (pid >0 and pid <=10 ))七、总结经过几周的设计和开发,数据库管理系统完成了所有的工作,其功能基本上符合用户的需求,能够完成各种任务。