两种类型的发票编号(两个表,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次以上,这是必须禁止的。
答
这将是更好地把第二编号系统在其自己的表。
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.这是一对一/零关系。
在'invoices_2(invoices_year inovices_document_type invoices_number)'上创建唯一约束。 – 2013-02-12 13:45:04