1

我有表格发票 - PK 是 year+document_type_id+number(这是当前编号,我无法更改)。所以,数据是这样的:

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

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

invoice - 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

4

1 回答 1

0

最好将第二个编号系统放在自己的表中。

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


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

Invoice 表中的 invoice 2 外键可以为空。当它为空时,没有发票 2。当它是有效 id 时,有发票 2。这是一对零/一的关系。

于 2013-02-12T13:52:59.963 回答