KTV系统的数据库设计 | ||||||||||||||||
1 系统分析与设计 1.1 需求分析 经济的发展在使我们的物质生活水平明显提高的同时,也带来了更为激烈的社会克争各行各业的工作者无不面临着巨大的生活和工作压力。上班一族似乎每天都有干不完的工作,周到周五的工作任务排的满满当当,工作日之余。他们非常渴望通过一定形式的休闲活动释放压力,“给自己的心情放个假”。休闲过节成为一种新时尚当今社会当中,它已经逐渐的容入了年轻人的专利,许许多多的中年人甚至老年人也会在闲暇时间,邀上好友,在KTV一展歌喉。这样不仅可以缓解平日里的压力,还会增进亲友之间的感情。KTV的岀现和发展满足了人们这种需求。 在中国,KTV企业逐渐朝着规模化、连锁化、品牌化的经营方式发展,很多KTV 企业一般都拥有几家或几十家分店,因而针对不同分店如何统一管理,是KTV企业需要关注的重中之重。KTV管理系统解决方案正是针对此现象而展开。各行业的发展和计算机系统的结合越来越紧密。很多歌厅借助现代高科技所带来的优质的服务,大大提高服务的档次,提升了企业的管理水平,提升了竞争力达到管理的系统化,规范化。 KTV管理系统解决方案对于商务交易,保证交易数据的真实性、完整性、一致性,如何防止数据被恶意篡改以及数据破坏后的恢复是至关重要的。KTV管理系统解决方案针对数据库安全,采用双机热备份机制,指定专人对数据库维护,很好地维护电子商务的交易数据。KTV管理系统解决方案通过数据集成组建连接各应用系统,当应用系统或数据库间数据交换规则、交换方向发生变化时,只需修改交换平台配置,无需源代码开发,是否便于实施和操作。顾客来到KTV一定会开包房消费,但是包房会有大小之分,不同类型的包房的价格也不同。可以按照顾客的需求进行包房的分配,并且及时知道包房剩余状态,更方便快捷的进行包房的分配。并且可以了解所有顾客的性别,年龄,电话,可以准确地为客人服务。进入包房前,顾客会在超市消费,系统可以对超市的账单进行查询,查询营业额,卖出商品的种类,数量以及支付的方式。对服务员可以准确地了解服务员信息,可以输入新招聘的服务员的信息,删除原来辞职的服务员信息,对服务员进行包房分配,有效地提高服务效率,使顾客体验更好。 1.2 系统功能设计 KTV管理系统主要设计了顾客信息、服务员信息、路包房信息、超市信息等功能,具体描述如下: (1)顾客信息管理可以实现对顾客即输入任一需要查询的顾客信息,点击查询按钮,反馈结果为该顾客的姓名,性别,电话等信息并且可以添加所有新顾客的信息,删除老顾客的信息。 (2)服务员信息管理功能实现了可以对包房以及服务员信息进行修改更新,可以更新新服务员信息等。 (3)包房信息管理可以进行包房状态查询与更新,在顾客使用和离开包方式可以调整包房状态,管理包房价格与查询包房的对应的负责人。 (4)超市信息管理可以查询超市销售情况,了解当天的营业额以及顾客的消费金额的支付方式。 2 数据库设计 2.1 数据库概念结构设计 2.2 数据库逻辑结构设计 1.顾客(顾客编号,顾客姓名,顾客性别,顾客年龄,顾客电话) 2.服务员(服务员编号,服务员姓名,服务次数,服务单价) 3.包房(包房号,包房价格,包房消费,包房类型,包房状态,包房负责人)4.超市(物品种类,物品总价,数量,付款方式) 2.3 数据库物理结构设计 (1)顾客表 实现了对于顾客信息的管理,包括顾客编号,顾客姓名,顾客性别,顾客年龄,顾客电话等属性列,其主键为顾客编号。 顾客编号Cno char 10 Primary key 顾客姓名Cname Varchar 8 Not null 顾客性别Csex Char 2 Check 顾客年龄Cage Int 4 Not null 顾客电话ctel Varchar 18 Unique (2)包房表 实现了对于服务员信息的管理,包括服务员编号,服务员姓名。服务次数,服务单价等属性列,其主键为服务员编号。 属性列名数据类型长度约束 包房号Rno char 10 Primary key 包房价格Rprice Decimal 10,2 Not null 包房消费Rconsume Money 8 Not null 包房类型Rtype Varchar 8 Not null 包房状态Rstate Char 4 default 包房负责人rname Varchar 8 Not null (3)服务员表 实现了对于服务员信息的管理,包括服务员编号,服务员姓名,服务次数,服务单价等属性列,其主键为服务员编号。 属性列名数据类型长度约束服务员编号sno Char 8 Primary key 服务员姓名Sname Varchar 10 Not null 服务次数Stime Char 4 Not null 服务单价Sprice money 8 Not null (4)超市表 实现了对于超市信息的管理,包括物品种类,物品总价,数量,付款方式等属性列,其主键为物品种类。 3 数据库实现 3.1 创建数据库 KTV管理系统创建名称为ktv的数据库,有主文件ktv_data,日志文件ktv_log,辅助文件ktv_data2。创建代码如下: 3.2 创建表 (1)顾客表 (2)包房表 (3)服务员表 (4)超市表 3.3 数据操作 1.数据录入 (1)顾客表信息录入: (4)超市表信息录入: 2.数据查询 (1)查询顾客表中最年长的顾客年龄。 (3)查询所有姓李的服务员的信息。 (4)查询包房空闲的包房信息。 (5)按照销售总价由高到低显示超市的物品种类,物品总价,购买数量及付款方式。 (6)查询服务次数大于30的服务员的信息。 (7)查询年龄在19-30之间的编号,姓名,性别,电话。 (8)查询包房类型及数量。 (9)查询服务员名字第二个字是'皓'的个人信息。 (10)查询超市的账本中卖出牛奶的订单信息。 (11)查询包房消费大于200的包房号,价格以及消费。 (12)按照服务单价由高到低显示服务员的编号,姓名,次数,单价。 (13)查询服务次数最多的服务员的编号,姓名和服务次数。 (14)查询包房的负责人,服务次数和包房类型。 (15)查询包房价格比包房平均价格高的包房的房间号,负责人,价格,包房类型。 (16)查询超市消费总价低于平均超市消费总价的营业额以及付款方式。 (17)查询超市每个种类的营业额。 (18)查询包房负责人负责的包房编号,包房类型,以及包房价格。 (19)查询包房负责人的编号,姓名,负责的包房号以及包房使用状态。 (20)查询各种包房的单价和。 (21)将电话为的顾客姓名改为张三丰。 (22)将辣条的支付方式改成支付宝。 (23)将包房的使用情况更新成使用。 (24)将305包房消费改成300。 (25)将刘鹏的名字更改为刘朋。 (26)将包房消费最多的包房对应负责人的服务单价加10。 (27)将顾客编号为的顾客电话改成151********。 (28)将服务次数最小的服务员的服务次数加5。 (29)将大包房对应的服务员服务次数均增加5次。 (30)将包房价格最贵的包房对应负责人的服务次数 1。 (31)将周立国的信息删除。 (32)将顾客电话为151********的顾客信息删除。 3.4 创建视图 1. 视图V1,查询年龄是岁的顾客的编号,姓名和年龄等个人信息。 2. 视图V2,按服务次数降序查询服务员编号和名字 3. 视图V3,按销售总价查询超市前15单信息。 4. 视图V4,查询所有服务员的姓名编号和他们负责对应包房的编号,类型。 5. 视图V5,查询包房价格大于的包房对应的服务员编号,姓名以及该包房类型。 1. 创建存储过程p1, 查询统计所有男顾客的信息。 2.创建存储过程p2. 查询年龄大于25的顾客的姓名,性别和年龄。 3.创建存储过程p3,统计每种支付方式的收款金额。 4.创建存储过程p4,录入顾客刘丽彤信息。 5.创建存储过程p5,查询服务员是否存在,存在服务次数加5,不存在显示无该服务员。 6.创建存储过程p6,查询包房价格最大的包房负责人信息。 7.创建存储过程p7,查询服务次数在20-50的服务员姓名,编号,服务次数以及房间号和类型。 8.创建存储过程p8,查询顾客是否存在年龄小于20,存在查询他的信息,如果不存在显示无。 9.创建存储过程p9,查询超市消费大于平均消费的交易信息。 10.创建存储过程p10,查询服务次数大于20次的服务员姓名,编号,服务单价以及负责的包房类型。 3.6 创建触发器 1. 创建触发器tr1,实现当录入一个服务员名的同时再录入其负责的包房类型以及包房价格。 2 .创建触发器tr2,实现当录入负责人名的同时再录入该负责人的编号以及服务单价。 3.创建触发器tr3,实现当录入服务员名的同时再录入该服务员负责的包房编号以及使用状态。 总结 在数据库实训中,通过创建一个系统数据库,创建表,录入数据,并进行单表查询,多表查询,数据更新,数据删除,创建视图,存储过程以及触发器,使我深入的了解数据库的使用。而KTV管理系统可以查询顾客的个人信息,方便确认顾客的信息,还可以查询包房的使用状态,价格等。可以管理服务员信息,对超市的销售情况做调查。利用avg,max,min,sum等函数进行快速简单的查询平均值,最大,最小或者统计总数。 运用分组查询时不知道用where还是having。在用group by时,where是在聚合函数求结果前进行筛选,而having是在聚合函数求完结果后进行筛选。在获取日期的数据格式是2015-12-13,而使用convert转换时格式为2015/12/13。还有就是对视图的使用和理解,对查询执行的大部分操作,使用视图一样可以完成。使用视图不仅可以简化数据操作,还可以提高数据库的安全性,不仅可以检索数据,也可以通过视图向表中添加、修改和删除数据。 遇到的问题以及解决方法: 1.无法进行多表查询,多表更新。 解决方法:将包房表添加了一列包房负责人,使的包房表和服务员表有关联 2.查询时出现该列没有包含在聚合函数或group by子句中如何解决?
|