繁体   English   中英

两种方法之间更好的医院病床费用数据库设计

[英]Better design of database for Hospital Bed charges between two approaches

我正在尝试创建一个用于医院病床收费的数据库。 对于哪种方法更好,我有点困惑。

哪种方法更容易维护和查询数据库?

我个人认为第一种方法更好。

方法1

room_no charges_cash    charges_cashless
MG1      300                400
MG2      400                500

方法2

room_no charges  cash_cashless
MG1      300     cash
MG1      400     cashless
MG2      400     cash
MG2      500     cashless

提前致谢

第一个。 这样,您可以将room_no用作主键。 第二个很好,当它不是主数据时,当它是关系表时。 这基于您的数据库设计。

简而言之,我将使用选项二。

从关系数据库设计的角度来看,我同意Flosculus,好像您希望将来增加其他类型的收费(例如,将无现金方式分为信用卡,Paypal,Worldpay等),然后在选项一中,您需要进行更改模式,但是在第二种方法中您没有; 只是在cash_cashless中使用不同的值(并且可能将该列重命名为“ payment_type”或其他内容?)

例如:

客房表

Room_No  Room_Name   Other_Columns
MG1      Room One          *
MG2      Room Two          *

收费表

Charge_ID Room_no Charge  Payment_Type
1         MG1      300     cash
2         MG1      400     cashless
3         MG2      400     cash
4         MG2      500     cashless  
5         MG2      450     cheque
6         MG2      600     creditcard 

同样,从性能的角度来看,您可能会发现选项2随着时间的推移会更好地扩展,因为您可以在查询中获得更细粒度的信息,并且可以创建更有效的索引。

如果您只想为每个房间提供一种收费类型,则可以使用[Room_no]和[Payment_Type]列中的复合主键。

使用方法2的原因是,如果要设计数据库以根据需求进行扩展。

第一个将更易于查询,但是第二个将使您可以向cash_cashless列添加其他值,尽管您可以将其重命名为更通用的名称来处理不同的类型。

在这种情况下,您的要求可能仅限于这两种现金和无现金方式,但是由于上述原因,通常使用第二种方法。

我将在一个字段中使用价格,在另一个字段中兑现,以免在您为一次付款创建两行的情况下避免另一字段的数据重复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM