[英]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.