数据库课程设计---超市会员管理系统学院:班级:姓名:学号:指导老师:《超市会员管理系统》需求分析报告需求分析:要做超市会员管理系统,首先要了解会员与一般的买家的区别以及成为会员的条件,这就需要我们去了解调查客户(超市方)对于成为会员的要求。调查完毕后要进行的就是对这个系统进行功能的设计和数据库的设计,超市会员管理系统主要是对提供会员的注册以及超市会员管理系统从主要是用于对超市会员的管理以及平时会员的积分及在超市消费金额的统计,而且要记录到会员卡的消费金额中,对会员的消费金额进行累加,最后生成总的消费金额,根据消费的总金额来累加消费积分,最后生成消费的积分添加到会员卡中。超市会员管理系统还能够对相关的优惠政策进行调整,以及对于会员的信息的增删查改和会员卡的管理,例如对会员卡挂失的处理,挂失的会员卡进行删除,使其不再生效。整个系统的设计要能够满足超市对会员的管理以及对超市其他日常事务的管理。需求分析的过程:(1)超市会员管理系统主要是分为两部分,一是会员的注册,以及对自己的信息的更改。第二部分是管理员对会员的管理以及平常的优惠政策的调整。(2)会员通过注册后可以登录超市的会员的管理系统查看近期自己的消费以及会员积分,还可以查看近期的优惠政策,不能修改积分,消费金额以及优惠政策,只能够对自己的个人信息以及密码进行修改。(3)超市会员管理系统的管理员则可以对会员的信息进行增删查改,对挂失的会员卡进行删除,以及对他的消费金额、积分进行修改。还能够对超市的相关优惠政策进行调整。功能描述:1、申请会员。需要实现加入会员的基本信息,包括:成为会员的基本条件、优惠政策、优惠时间等。2、实现会员注册。会员的基本信息,包括姓名、性别、年龄、工作单位、联系方式等。3、会员购物信息。购买物品编号、物品名称、所属种类,数量,价格等。会员返利信息。4、会员等级。包括会员积分的情况,享受优惠的等级等。对货物流量及消费人群进行统计输出。数据流图:会员生成消费金额记录到消费记录表中消费存储到会员卡中商品的详细属性传递查询更新数据字典:会员信息表:会员的基本信息表表中列名数据类型属性说明idintNotnull(主键,自增长)会员编号nameVarchar(8)Notnull会员姓名sexVarchar(8)Notnull性别AgeIntNotnull年龄TellVarchar(8)Notnull电话KidIntNotnull(外键)卡号编号WorkVarchar(8)Notnull单位会员购物表:会员的消费记录会员卡表:会员的积分、优惠登记、以及卡的基本信息表中列名数据类型属性说明KcidIntNotnull(主键)卡号编号FenIntNotnull积分ToppriceIntNotnull消费金额LevelVarchar(8)Notnull优惠等级IdIntNotnull(外键)会员编号商品表:商品的详细属性表中列名数据类型属性说明TidIntNotnull(主键)商品idClassVarchar(8)Notnull商品种类PriceIntNotnull单价表中列名数据类型属性说明UidIntNotnull(主键,自增长)购物编号TsidIntNotnull(外键)商品IDBnumIntNotnull购买数量TpriceIntNotnull消费价格IdIntNotnull(外键)会员编号概念结构设计:通过需求分析阶段的分析可对整个系统进行建模,然后是建立数据模型,概念结构的设计可分为两步:第一步是抽象数据并设计实体图。第二步是集成实体图,得到全局的概念结构。会员表实体图:会员SexAgeIdTelCardNameAgeKcId会员购物表实体图:会员购物表UidBnumIdsidTprice会员卡表实体图:会员卡表KidFenToppriceLevel商品表实体图:商品表SidClassPrice总体E-R图:成为会员条件基本条件优惠条件优惠时间注册会员会员编号姓名性别年龄单位电话卡号拥有会员卡卡号积分优惠等级消费金额会员编号购买数量商品id购物编号查询商品商品种类商品ID单价消费价格11mnmnn购物单购物逻辑结构设计:逻辑结构的实现主要是通过概念模型阶段的E-R图来向关系模型的转变。把实体之间的联系转换为关系模型。会员表(会员id,姓名,性别,年龄,电话,单位,会员卡号)主键:会员id外键:会员卡号会员购物表(购物id,商品号,购买数量,消费金额,会员卡号)主键:购物id会员卡表(会员卡id,会员编号,消费金额,积分,等级)主键:会员卡id商品表(商品id,类别,价格)主键:商品id物理设计阶段:物理设计是把前两阶段进行实施,选取一个具体的工作环境,这个工作环境提供数据储存结构与存取方法,这就是最后一步的物理设计。物理模型图:数据库的实施阶段:超市会员管理系统中最重要的一点是通过表之间的外键联系和触发器来实现数据的一致性和完整性,最终生成的表与表之间的关系如下图所示。因为用户必须参考商品表才能够进行购物,所以需要建立外键来进行约束,而其他表也需要根据用户的id号来进行辨别会员的身份,所以其他的表也需要建立外键来进行约束,不能够说,没有这个会员但是在购物表中也能够随意的插入会员号。所以在建立数据库和表的阶段要继续完善主键和外键以及触发器。1.建立数据库Createdatabasesupermarket;Usesupermarket;2.建立用户表DROPTABLEIFEXISTS`user`;CREATETABLE`user`(`id`int(11)NOTNULLAUTO_INCREMENT,`name`varchar(8)NOTNULL,`sex`varchar(8)NOTNULL,`age`int(11)NOTNULL,`tell`varchar(8)NOTNULL,`kid`int(11)NOTNULL,`work`varchar(8)NOTNULL,PRIMARYKEY(`id`),KEY`kid`(`kid`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;3.建立购物表DROPTABLEIFEXISTS`shopping`;CREATETABLE`shopping`(`uid`int(11)NOTNULLAUTO_INCREMENT,`tsid`int(11)NOTNULL,`bnum`int(11)NOTNULL,`tprice`int(11)NOTNULL,`id`int(11)NOTNULL,PRIMARYKEY(`uid`),KEY`id`(`id`),KEY`tsid`(`tsid`),CONSTRAINT`shopping_ibfk_2`FOREIGNKEY(`tsid`)REFERENCES`goods`(`tid`)ONDELETECASCADE,CONSTRAINT`shopping_ibfk_1`FOREIGNKEY(`id`)REFERENCES`user`(`id`)ONDELETECASCADE)ENGINE=InnoDBAUTO_INCREMENT=22DEFAULTCHARSET=utf8;4.建立会员卡表DROPTABLEIFEXISTS`card`;CREATETABLE`card`(`kcid`int(11)NOTNULLAUTO_INCREMENT,`fen`int(11)NOTNULL,`topprice`int(11)NOTNULL,`level`varchar(8)NOTNULL,`id`int(11)NOTNULL,PRIMARYKEY(`kcid`),KEY`id`(`id`),CONSTRAINT`card_ibfk_1`FOREIGNKEY(`id`)REFERENCES`user`(`id`)ONDELETECASCADE)ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;5.建立商品表DROPTABLEIFEXISTS`goods`;CREATETABLE`goods`(`tid`int(11)NOTNULLAUTO_INCREMENT,`class`varchar(8)NOTNULL,`price`int(11)NOTNULL,PRIMARYKEY(`tid`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8;6.触发器的建立建立一个触发器能够实现在消费表增加消费金额时同时增加会员卡当中的消费总金额的累计。delimiter$createtriggertgafterinsertonshoppingforeachrowbeginupdatecardsettopprice=topprice+new.tpricewhereid=new.id;end$7.向user(用户表)插入数据insertintouser(name,sex,age,tell,kid,work)values('王磊','女',20,1508337,10,'河南');insertintouser(name,sex,age,tell,kid,work)values('李磊','男',19,1508336,11,'山东');insertintouser(name,sex,age,tell,kid,work)values('小明','男',18,1508338,12,'安徽');8.向goods表(商品表)插入数据Insertintogoods(class,price)values(2,8);Insertintogoods(class,price)values(3,11);Insertintogoods(class,price)values(1,6);9.向card表(会员卡表)插入数据Insertintocard(fen,topprice,level,id)values(10,20,1,10);Insertintocard(fen,topprice,level,id)values(9,15,2,11);Insertintocard(fen,topprice,level,id)values(11,25,3,12);10.向shopping表(购物表)插入数据Insertintoshopping(tsid,bnum,tprice,id)values(4,20,23,10);Insertintoshopping(tsid,bnum,tprice,id)values(5,12,14,11);Insertintoshopping(tsid,bnum,tprice,id)values(6,9,12,12);