私は雇用主のデータベースシステムを開発しており、その一部には請求書の作成が含まれています。私は自分のテーブル上の自動インクリメントIDについて考えてきましたが、ビジネスの成長のためにはどこまで手当を支払う必要がありますか。システムが非常に包括的で、多くのレコードが更新されるため、私はInnoDBを利用しています。簡体SQL請求書自動インクリメントの転送計画
は、ここで私が現在持っているものです。
オフィス(。ビジネスのオフィス/店舗現在のところ2)
office_id(PK)INT、AI、UN請求書
invoice_no(PK)INT、AI、UN
office_id(FK)(請求書が由来。)製品
PRODUCT_ID(PK)INT、AI、国連のラインを作るために、請求書にInvoiceLine(ネクタイ製品。)
量
invoice_line_id(PK )INT、AI、UN
invoice_no(FK)
PRODUCT_ID(FK)
第1に、請求書番号が足りなくなることはありませんが、ビジネスに予期せぬオフィスの拡張と売上の増加があった場合には、これにアプローチする方がいいかと思います。 50以上の店舗を持つ大企業はどのようにこれに取り組んでいますか?各店舗には1から始まる独自の請求書番号が設定されていますか?
これは私が考えられてきたものである...
オプション1 - 私は、標準的な10の精度よりも大きなinvoice_noを作るべきか?難しいとは無関係に、現在の制限が不十分であるか、またはこれが不可能/非常に問題があることが判明した場合、配備後にこれを変更できますか?
オプション2 - 私の無知ですが、異なるエンジンタイプのテーブルでデータベースを構成することは可能ですか? MyISAMでは、請求書テーブルにoffice_idとinvoice_noの複合キーを設定することができます。この場合、自動インクリメントの数値はオフィスごとに個別に増加します。これは本当ですか、実行可能ですか?
オプション3 - 新しいオフィスの挿入時に新しいテーブルを作成できますか? InvoiceX & InvoiceXLineを作成します.Xはoffice_idですか?
私が考えていないより良い、より簡単な方法はありますか?
第2に、ビジネスが拡大してインボイスあたり30行以上の平均化が行われていた場合、invoice_line_idsが長期的に使い果たされることが考えられます。だから私はおそらく、この場合、上記のオプション3(すべてのinvoice_noのInvoiceLineXテーブルを作成する)を除いて、これに似たソリューションが必要になるでしょう。
私は単にInvoiceLineテーブルの主キーをinvoice_noとproduct_idの複合にすることができますか?