规范每月付款

时间:2016-09-30 23:50:05

标签: sql database normalization database-normalization

首先,抱歉我的英语不好。我试图规范养老金系统中的一个表,其中订阅者每月支付一次。我需要知道谁已经获得报酬,谁没有报酬以及他们已经支付了多少。我相信我使用的是SQL Server。这是一个例子:

id_subscriber  id_receipt     year   month     pay_value   payment type_pay
 12               1           2016   January    100          80       1   
 13               1           2016   January    100          100      1 
 14               1           2016   January    100          100      1
 12               2           2016   February   100          100      2
 13               2           2016   February   100          80       1

但我不满意每个订阅者重复年份和月份。它看起来并不正确。有没有更好的方法来存储这些数据?

修改 案例如下:该公司有许多订户,他们必须每月付款,付款可以有多种方式。他们为许多客户生成一张收据,而每个客户的收据可能是一次或多次分期付款。

这些是我的其他表:

                           tbl_subscriber
id_suscriber(PK) first_name  last_name  address  tel_1  tel_2
    12             Juan         Perez      xxx     xxx    xxx
    13             Pedro        Lainez     xxx     xxx    xxx
    14             Maria        Lopez      xxx     xxx    xxx 

                           tbl_receipt
id_receipt(PK)      value        elaboration_date  deposit_date 
    1             1,000.00         2015-09-16       2015-09-20
    2             890.00           2015-12-01       2015-12-18 

                          tbl_type_paym
 id               type             description
 1                bank               xxxx
 2              ventanilla            xxx    

1 个答案:

答案 0 :(得分:-2)

这基本上看起来很好。你可以将日期拆分成一个单独的表并引用它,但这让我觉得这是一种愚蠢的方式。我建议将月份存储为整数而不是varchar列。除了不能一遍又一遍地存储相同的字符串之外,您可以更合理地进行比较。

您也可以使用日期值,但如果您不想要比月份更大的粒度,这可能不值得。