医药超市管理系统.docx
《医药超市管理系统.docx》由会员分享,可在线阅读,更多相关《医药超市管理系统.docx(9页珍藏版)》请在冰豆网上搜索。
医药超市管理系统
医药超市管理系统
按照用户对该系统需求的描述,系统包括以下几个子系统:
职工治理
要求能够查询某家门店的职工情形,职工的详细信息;
能够添加、删除及更新。
门店治理
要求能够提供销售情形。
如某门店在某天销售了哪些药品,销售额是多少,某月各门店日平均销售额是多少;
能够添加、删除及更新。
药品治理
要求能够查询某家门店的某药品存量,或某药品在哪个门店有货,有多少;
能够添加、删除及更新。
供应商治理
要求能够查询某门店的某种药品来自于哪个供应商,来自于哪个都市;
能够添加、删除及更新。
综合以上需求,设计如下数据结构:
数据结构:
职工
含义:
记录职工的差不多信息。
组成:
编号,姓名,所属门店编号,性不,年龄,职务
数据结构:
门店
含义:
记录门店的差不多信息。
组成:
编号,地址,邮编,电话。
数据结构:
销售额
含义:
记录各门店的每日销售情形。
组成:
门店编号,药品编号,销售数量,单价,日期。
数据结构:
药品
含义:
记录药品的差不多信息。
组成:
编号,名称,条码。
数据结构:
存货量
含义:
记录药品在各门店的存货情形。
组成:
药品编号,门店编号,存货量。
数据结构:
供应商
含义:
记录供应商的差不多信息。
组成:
编号,名称,都市,地址,电话。
数据结构:
供应
含义:
记录各门店的进货情形。
组成:
门店编号,药品编号,供应商编号,进货单价,进货数量,进货日期。
数据字典:
数据项
类型
长度
取值范畴
与其他数据项的逻辑关系
职工编号
字符型
5
5Byte
非空且能够唯独标识一个职工
职工姓名
字符型
6
0-6Byte
非空
职工性不
字符型
2
2Byte
非空
职工年龄
无符号整型
1
1Byte
非空且不小于18
职工职务
字符型
10
0-10Byte
非空
门店编号
字符型
5
5Byte
非空且能够唯独标识一个门店
门店地址
字符型
50
0-50Byte
非空
门店邮编
字符型
6
6Byte
门店电话
字符型
15
0-15Byte
非空
药品编号
字符型
5
0-5Byte
非空且能够唯独标识一种药品
药品名称
字符型
20
0-20Byte
非空
药品条码
字符型
20
0-20Byte
非空且唯独
销售数量
无符号整型
5
0-5Byte
不小于0
销售单价
浮点型
10
0-10Byte
不小于0
销售日期
DATE型
20
20Byte
非空
存货量
无符号整型
5
0-5Byte
不小于0
供应商编号
字符型
5
5Byte
非空且能够唯独标识一个供应商
供应商名称
字符型
20
0-20Byte
非空
供应商都市
字符型
20
0-20Byte
供应商地址
字符型
20
0-20Byte
供应商电话
字符型
20
0-20Byte
进货单价
浮点型
10
0-10Byte
非空且不小于0
进货数量
无符号整型
5
0-5Byte
非空且不小于0
进货日期
DATE型
20
20Byte
非空
ER图
关系模式
按照ER图设计关系模式如下:
将每个实体转化为一个关系模式,职工与门店的m:
1的联系与m端的关系模式合并,门店与药品的m:
n的销售联系和储存联系转化为单独的关系模式,门店、药品与供应商之间的m:
n:
p的联系转化为单独的关系模式,得到所有的关系模式如下(下划线的属性为主码):
职工(编号,姓名,性不,年龄,职务,所属门店编号)
Employee(Eno,Ename,Esex,Eage,Estate,SHno);
门店(编号,地址,邮编,电话)
药品(编号,名称,条码)
Drug(Dno,Dname,Dnum);
供应商(编号,名称,都市,地址,电话)
销售(门店编号,药品编号,数量,单价,日期)
Sale(SHno,Dno,SAamout,SAprice,SAdate);
储存(门店编号,药品编号,存货量)
Store(SHno,Dno,STamout);
供应(门店编号,供应商编号,药品编号,单价,数量,日期)
Supply(SHno,SUno,Dno,Sprice,Samout,Sdate)。
规范化
职工(编号,姓名,性不,年龄,职务,所属门店编号)
每个职工的编号是唯独的,承诺同名。
该关系模式的函数依靠:
{编号→姓名,编号→性不,编号→年龄,编号→职务,编号→所属门店编号}
非主属性完全函数依靠于码,同时不存在非主属性对码的传递依靠,属3NF。
门店(编号,地址,邮编,电话)
每个门店的编号是唯独的。
该关系模式的函数依靠:
{编号→地址,编号→邮编,编号→电话}
非主属性完全函数依靠于码,同时不存在非主属性对码的传递依靠,属3NF。
药品(编号,名称,条码)
每种药品的编号是唯独的,条码也是唯独的。
该关系模式的函数依靠:
{编号→名称,编号→条码,条码→名称,条码→编号}
非主属性完全函数依靠于码,同时不存在非主属性对码的传递依靠,属3NF。
供应商(编号,名称,都市,地址,电话)
该关系模式的函数依靠:
{编号→名称,编号→都市,编号→地址,编号→电话}
非主属性完全函数依靠于码,同时不存在非主属性对码的传递依靠,属3NF。
销售(门店编号,药品编号,数量,单价,日期)
该关系模式的函数依靠:
{(门店编号,药品编号,日期)→数量,(门店编号,药品编号,日期)→单价}
非主属性完全函数依靠于码,同时不存在非主属性对码的传递依靠,属3NF。
储存(门店编号,药品编号,存货量)
该关系模式的函数依靠:
{(门店编号,药品编号)→存货量}
非主属性完全函数依靠于码,同时不存在非主属性对码的传递依靠,属3NF。
供应(门店编号,供应商编号,药品编号,单价,数量,日期)
该关系模式的函数依靠:
{(门店编号,供应商编号,药品编号,日期)→单价,(门店编号,供应商编号,药品编号,日期)→数量}
非主属性完全函数依靠于码,同时不存在非主属性对码的传递依靠,属3NF。
建表语句
createtableEmployee
(EnoCHAR(5)PRIMARYKEY,
EnameVARCHAR(6)NOTNULL,
EsexCHAR
(2)NOTNULL,
EageSMALLINT
(1)CHECK(Eage>=18),
EstateVARCHAR(10)NOTNULL,
SHnoCHAR(5)NOTNULL,
FOREIGNKEY(SHno)REFERENCESShop(SHno)
);
createtableShop
(SHnoCHAR(5)PRIMARYKEY,
SHaddressVARCHAR(50)NOTNULL,
SHpostCHAR(6),
);
createtableDrug
(DnoCHAR(5)PRIMARYKEY,
DnameVARCHAR(20)NOTNULL,
DnumVARCHAR(20)NOTNULLUNIQUE
);
createtableSupplier
(SUnoCHAR(5)PRIMARYKEY,
SUnameVARCHAR(20)NOTNULL,
SUcityVARCHAR(20),
SUaddressVARCHAR(20),
);
createtableSale
(SHnoCHAR(5),
DnoCHAR(5),
SAamoutSMALLINTCHECK(SAamout>=0),
SApriceFLOAT(10)CHECK(SAprice>=0),
SAdateDATENOTNULL,
PRIMARYKEY(SHno,Dno,SAdate)
FOREIGNKEY(SHno)REFERENCESShop(SHno),
FOREIGNKEY(Dno)REFERENCESDrug(Dno)
);
createtableStore
(SHnoCHAR(5),
DnoCHAR(5),
STamoutSMALLINTCHECK(STamout>=0),
PRIMARYKEY(SHno,Dno),
FOREIGNKEY(SHno)REFERENCESShop(SHno),
FOREIGNKEY(Dno)REFERENCESDrug(Dno)
);
createtableSupply
(SUnoCHAR(5),
DnoCHAR(5),
SpriceFLOAT(5)NOTNULLCHECK(Sprice>=0),
SamoutSMALLINTNOTNULLCHECK(Samout>=0),
SdateDATENOTNULL,
PRIMARYKEY(SUno,Dno,Sdate),
FOREIGNKEY(SUno)REFERENCESSupplier(SUno),
FOREIGNKEY(Dno)REFERENCESDrug(Dno)
)
查询
查询某家门店的职工情形,职工的详细信息。
例如查询编号为“11111”的店的职工信息:
select*
fromEmployee
whereSHno=’11111’;
查询某家门店的某药品存量?
或某药品在哪个门店有货?
有多少?
例如查询编号为“11111”的门店的编号为“22222”的药品存量:
selectSTamout
fromStore
whereSHno=’11111’andDno=’22222’;
例如查询编号为“22222”的药品在那个门店有货及存货量:
selectSHno,STamout
fromStore
whereDno=’22222’andSTamout>0;
提供销售情形。
如某门店在某天销售了哪些药品?
销售额是多少?
某月各门店日平均销售额是多少?
例如查询编号为“11111”的门店在2010年11月1号销售了哪些药品(显示药品编号及名称),销售额是多少:
selectSale.Dno,Dname,SAamout,SAprice,SAamout*SApriceasTotal
fromSale,Drug
whereSHno=’11111’andSAdate=2010-11-1andSale.Dno=Drug.Dno;
能够查询某门店的某种药品来自于哪个供应商?
来自于哪个都市?
例如查询编号为“11111”的门店的编号为“22222”的药品来自于哪个供应商(显示编号及名称),来自于哪个都市:
selectdistinctSUno,SUname,SUcity
fromSupply,Supplier
whereSHno=’11111’andDno=’22222’andSupply.SUno=Supplier.SUno;
需要具有数据插入,删除以及更新功能。
例如向Drug表中插入编号为22222、名称为板蓝根冲剂、条码为123456789SA的药品:
insert
intoDrug
values(‘22222’,’板蓝根冲剂’,’123456789SA’);
例如删除编号为11111的供应商信息:
delete
fromSupplier
whereSUno=’11111’;
例如将编号为11111的门店中的编号为22222的药品存货量改为12
updateStore
setSTamout=12
whereSHno=’11111’andDno=’22222’;