首先,抱歉我的英语不好。我试图规范养老金系统中的一个表,其中订阅者每月支付一次。我需要知道谁已经获得报酬,谁没有报酬以及他们已经支付了多少。我相信我使用的是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
答案 0 :(得分:-2)
这基本上看起来很好。你可以将日期拆分成一个单独的表并引用它,但这让我觉得这是一种愚蠢的方式。我建议将月份存储为整数而不是varchar列。除了不能一遍又一遍地存储相同的字符串之外,您可以更合理地进行比较。
您也可以使用日期值,但如果您不想要比月份更大的粒度,这可能不值得。