単純な株式データベースには、ティッカーテーブル、取引所テーブル、通貨テーブルの3つのテーブルがあります。ティッカーテーブルには、シンボル列(例:IBM)と交換テーブルの行への外部キーの2つの列があります。交換テーブルには、名前列(例:NYSE)と通貨テーブルの行への外部キーの2つの列があります。通貨テーブルには、記号(例:USD)という1つの列があります。 (各テーブルの主キー列は省略しました)。
同じ通貨に対して同じティッカーシンボルが2回存在してはならないという制約を適用するにはどうすればよいですか?つまり、1つだけ許可したい(IBM + USD)。(ticker.symbol + ticker.exchange)に一意の制約を作成するだけでは不十分です。(IBM + NASDAQ)がすでに存在する場合、(IBM + NYSE)は無効です。ティッカーテーブルと通貨テーブルを結合するビューを作成し、(view.ticker + view.currency)に一意のインデックスを作成できると思いました。ただし、私が知る限り、ビューにインデックスを作成することはできません。