特定のアイテムの価格を追跡するアプリケーションに取り組んでいます。
各価格には、アイテム、そのアイテムを販売するビジネス、およびアイテムが販売されている場所への参照があります。さて、通常、これはうまくいくでしょう:
CREATE TABLE `price` (
`priceId` INT UNSIGNED NOT NULL AUTO_INCREMENT, -- PK
`businessId` INT UNSIGNED NOT NULL,
`itemId` INT UNSIGNED NOT NULL,
`locationId` INT UNSIGNED NOT NULL,
`figure` DECIMAL(19,2) UNSIGNED NOT NULL,
-- ...
)
しかし、次の問題があります。
アプリケーション ロジックは、1 つの場所にある 1 つのビジネスの 1 つのアイテムに複数の価格を設定でき (この時点では、その理由はあまり重要ではありません)、それらの価格の 1 つを公式価格にすることができます。価格ですが、ある場合は1つしかありません。
問題は次のとおりです。データの整合性を確保するためにこれをモデル化する方法は?
私の最初のアイデアは、追加のテーブルを作成することでした:
CREATE TABLE `official_price` (
`priceId` INT UNSIGNED NOT NULL -- PK + FK (references price.priceId),
-- ...
)
このテーブルは、公式の価格の priceId:s を保持し、PK/UNIQUE 制約が「1 つまたは 1 つもない」制約を処理します。
これは実行可能な解決策のように思えますが、この状況を処理するためのより良い方法があるかどうかまだ疑問に思っていますか?