两种类型的发票编号(两个表,0..1关系)

问题描述:

我有表发票 - PK是年份+ document_type_id +数字(这是当前编号,我无法更改它)。因此,该数据是这样的:两种类型的发票编号(两个表,0..1关系)

year document_type_id number 
2013 351    1 
2013 351    2 
2013 352    1 

现在,我需要开发第二类编号的 - 表invoices_2 - PK是一年+ market_id + cash_register_id +数字(这是编号为一些发票是由禁止法律),FK是invoices_year + invoices_document_type_id + invoices_number。

发票 - invoice_2必须是1 - > 0..1的关系。

的问题是,在invoices_2表我可以有这个(我想消除 - 使用一些PK + FK组合):

year market_id cash_register_id number invoices_year inovices_document_type invoices_number 
2013  1    1   1   2013   351     1 
2013  1    1   2   2013   351     1 

正如你所看到的,发票2013-351- 1使用可以在invoices_2表中增加1次以上,这是必须禁止的。

http://www.sqlfiddle.com/#!3/6b42c/1

+3

在'invoices_2(invoices_year inovices_document_type invoices_number)'上创建唯一约束。 – 2013-02-12 13:45:04

这将是更好地把第二编号系统在其自己的表。

Invoice 
------- 
year 
document_type_id 
number 
invoice_2_fk 
... 


Invoice_2 
--------- 
invoice_2 _id 
year 
market_id 
cash_register_id 
number 

发票表中的发票2外键可为空。当它为空时,没有发票2.当它是一个有效的id时,那么就有一张发票2.这是一对一/零关系。