医院药品进销存系统.docx
- 文档编号:9772332
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:17
- 大小:233.61KB
医院药品进销存系统.docx
《医院药品进销存系统.docx》由会员分享,可在线阅读,更多相关《医院药品进销存系统.docx(17页珍藏版)》请在冰豆网上搜索。
医院药品进销存系统
医院药品进销存系统数据库设计
一需求分析
1.1需求调查
由于对医院和药品编码等信息不是很熟悉,我们在网上和附近的医院进行了系统的调查,以使我们的设计更符合实际包括以下几个方面:
1、医院药品进销存业务状况:
系统需求、组织结构、管理容、业务过程等。
2、数据的规与统一:
详细了解了药品统一编码的规,对于同一种编码的药品它的通用名,剂型,规格是相同的。
而与其它属性(质量层次,价格等)无关。
3、其他要求:
对数据性、数据完整性的要求,对数据精度和数据吞吐量的要求,对
来功能、应用围扩展性的要求等。
1.2基本功能分析
本设计要实现的是医院药品进销存系统,在设计该系统时,应尽可能贴近实际、便于用户操作.系统在实现上应该具有如下功能:
1.系统要示用户必须输入正确的用户名和密码才能进入系统.
2.主要功能模块
A.新药品的入库。
B.过期药品的出库登记、处理记录。
C.药品库存检索。
D.供货商信息检索。
E.药品采购记录管理。
F.药品用药说明信息管理。
G.输出相应的数据报表。
H.*具有数据备份和数据恢复功能。
其功能模块图如下:
二概念设计
在需求分析的基础上,我们对医院药品进销存系统有了一定的了解。
在分析设计概念模型时,首先找出模型所需的实体,然后找到各实体之间的关系,画出E—R模型图。
2.1、实体及其间的关系设计
对于医院药品进销存系统,我们设计了药品,供货商,仓库,操作员四个实体。
结合实际情况及对数据库设计的方便,各个实体之间的关系如下:
供货商和药品之间应该是存在Offer关联,它们之间为多对多关系。
供货商,仓库,药品之间存在Order关联,它们之间为多对多关系。
药品,仓库之间存在Own关联,它们之间为多对多关系。
药品,操作员,仓库之间存在InStore和OutStore关联,它们之间为多对多关系。
药品和操作员之间存在Medicine_Useinfo关联,它们之间为多对多关系。
2.2E-R模型图的设计
根据较为详细的需求分析,我们设计出了以下E-R模型图如下.
三逻辑设计
逻辑结构设计的目的是将ER模型向关系模型转换,注意转换时关系的主键、外键的设置以保持原有的ER模型中实体与实体之间的关系,另外还应当进行规化处理以消除数据冗余。
3.1ER图向关系模型的转化(主键已标出下划线)
Medicine(M_NO,M_ID,M_Name,M_Type,M_Spec,M_Qlevel,M_Price,M_Date,M_Date,M_Funtime)
存在冗余,根我们把它拆分成两表
Medicine(M_ID,M_Name,M_Type,M_Spec)
Medicine_Sub(M_NO,M_ID,M_Price,P_ID,M_Date,M_Date,M_OutTime,M_Qlevel)
注:
M_ID为外键
其他关系模型如下
StoreRoom(S_ID,S_Addr)
Operator(O_ID,O_Name,O_sex)
Provider(P_ID,P_Name,P_Addr,P_Post,P_Tel,P_Email,P_Fax,P_Conp,P_ConTel)
Offer(M_ID,P_ID)
注M_ID,P_ID为外键
Own(M_NO,S_ID,Own_Mount)
注:
M_NO,S_ID为外键
InStore(S_ID,O_ID,In_Mount,In_Date)
注:
S_ID,O_ID为外键
OutStore(O_ID,S_ID,Out_Mount,Out_Date,Out_Type)
注:
O_ID,S_ID为外键
Order(P_ID,S_ID,Od_ID,Od_Mount,Od_Date,Od_Price)
注:
P_ID,S_ID为外键
Medicine_Useinfo(M_NO,O_ID,Patient_Name,Use_Mount,Use_Price,Use_Date)
注:
M_NO,O_ID为外键
3.2、E-R图转换成关系模型所遵循的原则
我们把E-R图转换成关系模型所遵循的原则:
1)每一个实体类型转换成一个关系模式。
如实体Medicine,StoreRoom,Operator,Provider,都可以转化成对应的一个关系模式。
关系模型的主键是E-R模型的标识符,其他属性一样。
2)一个联系可转化为一个关系模式,那么,两端关系的标识符及该联系属性为关系的属性,而关系的标识符为两端实体标识符的组合。
3)三个或三个以上的多对多的联系可转化为一个关系模式,那么,该关系的标识符及联系的属性为关系的属性,而关系的标识符为各实体标识符的组合。
4)我们还涉及到了引用完整性约束,也就是外键的约束,外码的约束贯穿着我们设计的始终,它把我们建立的关系紧密的联系在了一起。
5)我们对关系模式进行了消除数据冗余的处理。
应符合第三式,不允许出现传递依赖、冗余、异常等等。
在逻辑设计中形成了关系表后需要对关系作规化处理,使每个关系表至少满足第三式的要求。
对违反第三式的关系我们进行了分析并作了相应的调整。
对各关系模式之间的数据依赖进行了极小化处理,消除了冗余。
对违反第三式的关系模式进行了必要的分解和合并。
3.3数据表的详细信息
以下是各个数据表的详细信息(还附加了一个表来存放管理员的信息.以便于管理员用户的登录操作):
Medicine信息表
Medicine_Sub信息表
Provider信息表
Operator信息表
StoreRoom信息表
DealOutDate表
Own信息表
Orders信息表
InStore信息表
OutStore信息表
Offer信息表
Medicine_Useinfo信息表
UserList信息表
四物理设计
4.1.索引设计
关系属性A上的索引是一种数据结构,它可以提高查找在属性A上具有某个特定值的元祖的效率。
索引通常有助于包含有属性A和常量的查询,但当关系变得很大时,通过扫描关系中所有的元祖来找出那些匹配给定条件的元祖的操作方式代价太高。
故我们设计索引需要对一下两方面折中选择。
首先,对某个属性使用索引能极大的提高对该属性值的检索效率,使用该属性时,还可以加快连接。
其次,对关系上某个属性的索引会使得对关系的插入、删除、修改变得复杂和费时。
因此经过分析本系统的功能和需求可知,本系统的药品表中的记录可能相当的庞大,而且基于药品名称或编码的查询和修改相当的频繁,加之在数据库更新和维护过程中对供货商的更新和查询也比较的频繁,而且供货商的数量也可能比较大,综合考量后应为本系统建立如下3个索引,已达到操作的便捷和系统功能的优化。
createuniqueindexM_ID_indexonMedicine(M_ID);
createuniqueindexP_ID_indexonProvider(P_ID);
createindexM_Name_indexonMedicine(M_Name);
五安全性设计
5.1安全性设计分析
SQLServer的安全性管理是建立在认证和访问许可两者机制上的。
认证是指确定登陆SQLServer的用户的登录账号和密码是否正确,以此来验证其是否具有SQLServer的权限。
但是登录并不被授予访问数据库的许可。
第二个用户级才是用户,用户在数据库具有访问数据库的权限之后才能对数据库进行权限许可下的各种操作。
而具有相同的许可的用户可以组成一个角色。
考虑到该系统可能有不同的用户,而每个用户对该数据库的访问权限应该是不一样的。
我们把该系统的用户角色大致分为:
管理员和不同的操作员。
结合实际情况,管理员可以对整个系统进行所有的操作,包括查询、删除、修改、插入。
操作员可以进行他所允许围的操作。
例如入库操作员可以进行查询药品信息的添加修改,库房信息的添加修改。
出库操作员可以进行用药信息的管理,过期药品处理的管理和库房信息的修改删除。
由于考虑到引用完整性约束,也即是外键约束。
在删除、修改时用级联原则。
当一个表的某一些值被修改时,引用这个表的属性的表的相应的属性值随着改变。
5.2添加用户和角色
添加用户
步骤一,从SQLServer程序组中运行SQLServerEnterpriseManager。
步骤二,在窗口左半部中将使用的服务器,将其展开。
步骤三,选择要添加用户的数据库(Medicine数据库),将其展开。
步骤四,选择用户目录,单击右键,选择新建用户,弹出数据库用户属性窗口。
步骤五,从登录名下拉框中选择用户所属的登陆。
(或者新建一个登陆,方法为:
选择下拉框中新建,在弹出的对话框中填入名称,选择SQLServer身份验证,填写密码。
->确定->填写新密码->确定)
步骤六,在数据库角色允许选择Public。
步骤七,单击“确定”生成新的用户,添加用户后,在用户子目录下看到该用户。
添加角色
步骤一,从SQLServer程序组中运行SQLServerEnterpriseManager。
步骤二,在窗口左半部中将使用的服务器,将其展开。
步骤三,选择要添加用户的数据库(Medicine数据库),将其展开。
步骤四,选择角色子目录,单击右键,选择新建角色,弹出数据库角色属性窗口。
步骤七,在名称框中输入角色名。
步骤八,如果要往角色中添加现有的用户,单击添加按纽将用户添加到角色中。
步骤九,单击OK将角色添加到数据库中,此时SQLServerEnterpriseManager窗口的右半部窗口中会显示新添加的角色。
步骤十,用鼠标右键单击新添加的角色,从弹出的快捷菜单中选择属性,右键单击打开。
步骤十一单击权限按钮,打开数据库角色属性对话框,在要赋予它权限设置上面打钩。
单击仅列出该角色具有权限的对象,检查赋予的权限是否正确。
步骤十二,检查无误,单击"确定"按纽返回到SQLServerEnterpriseManager。
六数据库实现
6.1数据表的创建及其完整性说明:
--====================================================================
--**************供货商Provider表**************
createtableProvider(
P_IDchar(5)primarykey,
P_Namevarchar(50)uniquenotnull,
P_Addrvarchar(50)notnull,
P_Postchar(6),
P_Telvarchar(14)notnull,
P_Emailvarchar(50)notnull,
P_Faxvarchar(10),
P_ConPvarchar(20),
P_ConTelvarchar(14)
)
--====================================================================
--**************药品Medicine表**************
createtableMedicine(
M_IDchar(16)primarykey,
M_Namevarchar(50)notnull,
M_Typevarchar(10)notnull,
M_Specvarchar(10)notnull,
)
--====================================================================
--**************药品Medicine子表**************
createtableMedicine_Sub(
M_NOchar(8)primarykey,
M_IDchar(16)referencesMedicine(M_ID)notnull,
M_Pricenumeric(10,2),
P_IDchar(5)referencesProvider(P_ID)notnull,
M_Datedatetimenotnull,
M_OutTimedatetimenotnull,
M_QLevelvarchar(10)notnull
)
--====================================================================
--**************库房StoreRoom表**************
createtableStoreRoom(
S_IDchar(5)primarykey,
S_Addrvarchar(50)notnull
)
//====================================================================
--**************库房拥有药品Own表**************
createtableOwn(
M_IDchar(16)referencesMedicine(M_ID)notnull,
S_IDchar(5)referencesStoreRoom(S_ID)notnull,
Own_Mountintnotnull
)
--====================================================================
--**************订单Orders表**************
createtableOrders(
Od_IDchar(8),
P_IDchar(5)referencesProvider(P_ID)notnull,
S_IDchar(5)referencesStoreRoom(S_ID)notnull,
M_IDchar(16)referencesMedicine(M_ID)notnull,
Od_Mountintnotnull,
Od_Datedatetimenotnull,
Od_Pricenumeric(10,2)notnull
)
--====================================================================
--**************操作员Operator表**************
createtableOperator(
O_IDchar(5)primarykey,
O_Namevarchar(20)notnull,
O_Sexchar
(1)check(O_Sexin('F','M'))default('M')
)
--====================================================================
--**************出库OutStore表**************
createtableOutStore(
O_IDchar(5)referencesOperator(O_ID)notnull,
S_IDchar(5)referencesStoreRoom(S_ID)notnull,
M_IDchar(16)referencesMedicine(M_ID)notnull,
Out_Mountintnotnull,
Out_Datedatetimenotnull,
Out_Typevarchar(20)check(Out_Typein('Sell','OutOfDate'))notnull
)
--====================================================================
--**************供货商提供药品Offer表**************
createtableOffer(
P_IDchar(5)referencesProvider(P_ID)notnull,
M_IDchar(16)referencesMedicine(M_ID)notnull,
)
--====================================================================
--**************用药信息Medicine_Useinfo表**************
createtableMedicine_Useinfo(
M_IDchar(16)referencesMedicine(M_ID)notnull,
O_IDchar(5)referencesOperator(O_ID)notnull,
Patient_Namevarchar(20)notnull,
Use_Mountintnotnull,
Use_Pricenumeric(10,2)notnull,
Use_Datedatetimenotnull
)
--====================================================================
--**************入库InStore表**************
createtableInStore(
S_IDchar(5)referencesStoreRoom(S_ID)notnull,
O_IDchar(5)referencesOperator(O_ID)notnull,
M_IDchar(16)referencesMedicine(M_ID)notnull,
In_Mountintnotnull,
In_Datedatetimenotnull
)
--====================================================================
--**************过期药品处理DealOutDate表**************
createtableDealOutDate(
S_IDchar(5)referencesStoreRoom(S_ID)notnull,
M_IDchar(16)referencesMedicine(M_ID)notnull,
O_IDchar(5)referencesOperator(O_ID)notnull,
Deal_Typevarchar(50)notnull,
Deal_Datedatetimenotnull,
Deal_Addrvarchar(50)notnull,
Deal_Mountintnotnull
)
--====================================================================
--**************过期药品OutOfDateMedicine视图**************
CreateviewOutOfDateMedicineas
select*
fromMedicine_Sub
whereM_OutTime --==================================================================== --**************库存总量StoreroomTotalAmount视图************** CreateviewStoreroomTotalAmountas SelectS_ID,sum(Own_Mount)astotalAmount fromOwn groupbyS_ID --==================================================================== --**************订单总价OrdersTotalPrice视图************** CreateviewOrdersTotalPriceas SelectOd_ID,sum(Od_Price)astotalPrice fromOrders groupbyOd_ID 七参考文献 《数据库系统基础教程》(中、英文版,第2版),美国斯坦福大学,机械工业2006.07 《精通SQL-结果会查询语言详解》高守传,人民有点,2006 《数据库设计教程》,何玉洁等翻译,机械工业,2003 《数据库系统教程》,王能斌著,电子工业,2002
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 医院 药品 进销存 系统