1

表の請求書があります - PK は year+document_type_id+number です (これは現在の番号付けであり、変更できません)。したがって、データは次のようになります。

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

ここで、2 番目のタイプの番号付けを開発する必要があります - テーブルinvoices_2 - PK は year+market_id+cash_register_id+number (これは、法律で禁止されている一部の請求書の番号付​​けです)、FK はinvoices_year+invoices_document_type_id+invoices_number です。

請求書 - 請求書_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 テーブルに複数回追加できますが、これは禁止する必要があります。

http://www.sqlfiddle.com/#!3/6b42c/1を参照してください。

4

1 に答える 1

0

2 番目の番号付けシステムを独自のテーブルに配置することをお勧めします。

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


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

請求書テーブルの請求書 2 外部キーは、NULL 可能です。null の場合、請求書 2 はありません。有効な ID の場合、請求書 2 があります。これは、1 対 0 / 1 の関係です。

于 2013-02-12T13:52:59.963 に答える