资源描述
一、 需求分析根据用户对该系统需求的描述,系统包括以下几个子系统:1. 职工管理要求能够查询某家门店的职工情况,职工的详细信息;能够添加、删除及更新。2. 门店管理要求能够提供销售情况。如某门店在某天销售了哪些药品,销售额是多少,某月各门店日平均销售额是多少;能够添加、删除及更新。3. 药品管理要求能够查询某家门店的某药品存量,或某药品在哪个门店有货,有多少;能够添加、删除及更新。4. 供应商管理要求能够查询某门店的某种药品来自于哪个供应商,来自于哪个城市;能够添加、删除及更新。综合以上需求,设计如下数据结构:1. 数据结构:职工含义:记录职工的基本信息。组成:编号,姓名,所属门店编号,性别,年龄,职务2. 数据结构:门店含义:记录门店的基本信息。组成:编号,地址,邮编,电话。3. 数据结构:销售额含义:记录各门店的每日销售情况。组成:门店编号,药品编号,销售数量,单价,日期。4. 数据结构:药品含义:记录药品的基本信息。组成:编号,名称,条码。5. 数据结构:存货量含义:记录药品在各门店的存货情况。组成:药品编号,门店编号,存货量。6. 数据结构:供应商含义:记录供应商的基本信息。组成:编号,名称,城市,地址,电话。7. 数据结构:供应含义:记录各门店的进货情况。组成:门店编号,药品编号,供应商编号,进货单价,进货数量,进货日期。数据字典:数据项类型长度取值范围与其他数据项的逻辑关系职工编号字符型55Byte非空且可以唯一标识一个职工职工姓名字符型60-6Byte非空职工性别字符型22Byte非空职工年龄无符号整型11 Byte非空且不小于18职工职务字符型100-10 Byte非空门店编号字符型55 Byte非空且可以唯一标识一个门店门店地址字符型500-50 Byte非空门店邮编字符型66 Byte门店电话字符型150-15 Byte非空药品编号字符型50-5 Byte非空且可以唯一标识一种药品药品名称字符型200-20 Byte非空药品条码字符型200-20 Byte非空且唯一销售数量无符号整型50-5 Byte不小于0销售单价浮点型100-10 Byte不小于0销售日期DATE型2020 Byte非空存货量无符号整型50-5 Byte不小于0供应商编号字符型55 Byte非空且可以唯一标识一个供应商供应商名称字符型200-20 Byte非空供应商城市字符型200-20 Byte供应商地址字符型200-20 Byte供应商电话字符型200-20 Byte进货单价浮点型100-10 Byte非空且不小于0进货数量无符号整型50-5 Byte非空且不小于0进货日期DATE型2020 Byte非空二、 ER图编号姓名性别年龄职务职工编号m工作地址1邮编日期电话门店m单价数量日期m数量m供应单价销售储存存货量pnnn编号药品名称供应商编号名称电话地址城市条码三、 关系模式根据ER图设计关系模式如下:将每个实体转化为一个关系模式,职工与门店的m:1的联系与m端的关系模式合并,门店与药品的m:n的销售联系和储存联系转化为单独的关系模式,门店、药品与供应商之间的m:n:p的联系转化为单独的关系模式,得到所有的关系模式如下(下划线的属性为主码):职工(编号,姓名,性别,年龄,职务,所属门店编号)Employee ( Eno ,Ename , Esex ,Eage , Estate , SHno );门店(编号,地址,邮编,电话)Shop ( SHno , SHaddress , SHpost , SHtel );药品(编号,名称,条码)Drug ( Dno , Dname , Dnum );供应商(编号,名称,城市,地址,电话)Supplier ( SUno , SUname , SUcity , SUaddress , SUtel );销售(门店编号,药品编号,数量,单价,日期)Sale ( SHno , Dno , SAamout , SAprice , SAdate );储存(门店编号,药品编号,存货量)Store ( SHno , Dno , STamout );供应(门店编号,供应商编号,药品编号,单价,数量,日期)Supply ( SHno , SUno , Dno , Sprice , Samout ,Sdate)。四、 规范化1. 职工(编号,姓名,性别,年龄,职务,所属门店编号)每个职工的编号是唯一的,允许同名。该关系模式的函数依赖: 编号姓名,编号性别,编号年龄,编号职务,编号所属门店编号非主属性完全函数依赖于码,并且不存在非主属性对码的传递依赖,属3NF。2. 门店(编号,地址,邮编,电话)每个门店的编号是唯一的。该关系模式的函数依赖: 编号地址,编号邮编,编号电话非主属性完全函数依赖于码,并且不存在非主属性对码的传递依赖,属3NF。3. 药品(编号,名称,条码)每种药品的编号是唯一的,条码也是唯一的。该关系模式的函数依赖: 编号名称,编号条码,条码名称,条码编号非主属性完全函数依赖于码,并且不存在非主属性对码的传递依赖,属3NF。4. 供应商(编号,名称,城市,地址,电话)该关系模式的函数依赖: 编号名称,编号城市,编号地址,编号电话非主属性完全函数依赖于码,并且不存在非主属性对码的传递依赖,属3NF。5. 销售(门店编号,药品编号,数量,单价,日期)该关系模式的函数依赖: (门店编号,药品编号,日期)数量,(门店编号,药品编号,日期)单价非主属性完全函数依赖于码,并且不存在非主属性对码的传递依赖,属3NF。6. 储存(门店编号,药品编号,存货量)该关系模式的函数依赖: (门店编号,药品编号)存货量非主属性完全函数依赖于码,并且不存在非主属性对码的传递依赖,属3NF。7. 供应(门店编号,供应商编号,药品编号,单价,数量,日期)该关系模式的函数依赖: (门店编号,供应商编号,药品编号,日期)单价,(门店编号,供应商编号,药品编号,日期)数量非主属性完全函数依赖于码,并且不存在非主属性对码的传递依赖,属3NF。五、 建表语句create table Employee( Eno CHAR(5) PRIMARY KEY,Ename VARCHAR(6) NOT NULL,Esex CHAR(2) NOT NULL,Eage SMALLINT(1) CHECK(Eage=18),Estate VARCHAR(10) NOT NULL,SHno CHAR(5) NOT NULL,FOREIGN KEY(SHno) REFERENCES Shop(SHno);create table Shop( SHno CHAR(5) PRIMARY KEY,SHaddress VARCHAR(50) NOT NULL,SHpost CHAR(6),SHtel VARCHAR(15) NOT NULL);create table Drug( Dno CHAR(5) PRIMARY KEY, Dname VARCHAR(20) NOT NULL, Dnum VARCHAR(20) NOT NULL UNIQUE );create table Supplier( SUno CHAR(5) PRIMARY KEY, SUname VARCHAR(20) NOT NULL, SUcity VARCHAR(20), SUaddress VARCHAR(20), SUtel VARCHAR(20);create table Sale( SHno CHAR(5), Dno CHAR(5), SAamout SMALLINT CHECK(SAamout=0), SAprice FLOAT(10) CHECK(SAprice=0), SAdate DATE NOT NULL, PRIMARY KEY (SHno , Dno , SAdate) FOREIGN KEY (SHno) REFERENCES Shop(SHno), FOREIGN KEY (Dno) REFERENCES Drug(Dno);create table Store( SHno CHAR(5), Dno CHAR(5),STamout SMALLINT CHECK(STamout=0),PRIMARY KEY (SHno , Dno),FOREIGN KEY (SHno) REFERENCES Shop(SHno),FOREIGN KEY (Dno) REFERENCES Drug(Dno) );create table Supply( SUno CHAR(5), Dno CHAR(5), Sprice FLOAT(5) NOT NULL CHECK(Sprice=0), Samout SMALLINT NOT NULL CHECK(Samout=0), Sdate DATE NOT NULL, PRIMARY KEY (SUno , Dno , Sdate), FOREIGN KEY (SUno) REFERENCES Supplier(SUno), FOREIGN KEY (Dno) REFERENCES Drug(Dno)六、 查询1. 查询某家门店的职工情况,职工的详细信息。例如查询编号为“11111”的店的职工信息:select *from Employeewhere SHno=11111;2. 查询某家门店的某药品存量?或某药品在哪个门店有货?有多少?例如查询编号为“11111”的门店的编号为“22222”的药品存量:select STamoutfrom Storewhere SHno=11111 and Dno=22222;例如查询编号为“22222”的药品在那个门店有货及存货量:select SHno , STamoutfrom Storewhere Dno=22222 and STamout0; 3. 提供销售情况。如某门店在某天销售了哪些药品?销售额是多少?某月各门店日平均销售额是多少?例如查询编号为“11111”的门店在2010年11月1号销售了哪些药品(显示药品编号及名称),销售额是多少:select Sale.Dno , Dname , SAamout , SAprice , SAamout*SAprice as Totalfrom Sale , Drugwhere SHno=11111 and SAdate=2010-11-1 and Sale.Dno =Drug.Dno;4. 能够查询某门店的某种药品来自于哪个供应商?来自于哪个城市?例如查询编号为“11111”的门店的编号为“22222”的药品来自于哪个供应商(显示编号及名称),来自于哪个城市:select distinct SUno , SUname , SUcityfrom Supply , Supplier where SHno=11111 and Dno=22222 and Supply.SUno=Supplier.SUno;5. 需要具有数据插入,删除以及更新功能。例如向Drug表中插入编号为22222、名称为板蓝根冲剂、条码为123456789SA的药品:insertinto Drugvalues (22222,板蓝根冲剂,123456789SA);例如删除编号为11111的供应商信息:deletefrom Supplierwhere SUno=11111;例如将编号为11111的门店中的编号为22222的药品存货量改为12update Storeset STamout=12where SHno=11111 and Dno=22222;
展开阅读全文