这个sql表定义和关系是对的吗?

时间:2012-04-25 11:35:40

标签: sql database-design

问题并不大,但逻辑在某些时候变得很难,所以同样存在。我必须将客户数据保存到sql表中。客户记录在excel shet中看起来像这样。合同期限为6个月或12个月。每个客户在一个月后分期付款。每个月有两个记录分期付款金额和佣金金额。 excel表有这样的记录数据

SR,
CustomerID,
Customername,
CompanyName,
relationType,
ContractStartDate,
ContractDuration,
TotalInstallment,
Comission,
paymentMode,
JanuaryInstallment,
JanuaryCommision,
...
DecemberMonthInstallment,
DecemberMonthCommision

为此我在sql中定义了这些表: enter image description here

这些表格是否正确?我对月份名称记录感到困惑,我把它放在分期付款表中,每个分期付诸如(firstInstallmentMonthfirstinstallmentfirstinstallmentCommision

我很困惑,引导我前辈?

2 个答案:

答案 0 :(得分:2)

我认为您希望将Installment表规范化为类似

的内容
Table INSTALMENT
    contract_id     -- FK to contract table
    date            -- used to specify month and date
    instalment      -- the instalment amount
    commission      -- the commission amount
    primary key (contract_id, date)

您可以浏览excel表并为每一部分创建一个条目(注意,这是伪代码):

insert into INSTALMENT 
   (contract_id, to_date('01-01-year', 'DD-MM-YYYY'), JanuaryInstalment, JanuaryCommission)
insert into INSTALMENT 
   (contract_id, to_date('01-02-year', 'DD-MM-YYYY'), FebruaryInstalment, FebruaryCommission)
insert into INSTALMENT 
   (contract_id, to_date('01-03-year', 'DD-MM-YYYY'), MarchInstalment, MarchCommission)

EDIT2:添加了伪to_date日期格式以避免混淆。

答案 1 :(得分:1)

我建议读这个: http://en.wikipedia.org/wiki/Database_normalization

我会将月份放在“分期付款”表中,因为每个分期付款都有不同的月份