1

単純な株式データベースには、ティッカーテーブル、取引所テーブル、通貨テー​​ブルの3つのテーブルがあります。ティッカーテーブルには、シンボル列(例:IBM)と交換テーブルの行への外部キーの2つの列があります。交換テーブルには、名前列(例:NYSE)と通貨テーブルの行への外部キーの2つの列があります。通貨テーブルには、記号(例:USD)という1つの列があります。 (各テーブルの主キー列は省略しました)。

同じ通貨に対して同じティッカーシンボルが2回存在してはならないという制約を適用するにはどうすればよいですか?つまり、1つだけ許可したい(IBM + USD)。(ticker.symbol + ticker.exchange)に一意の制約を作成するだけでは不十分です。(IBM + NASDAQ)がすでに存在する場合、(IBM + NYSE)は無効です。ティッカーテーブルと通貨テーブルを結合するビューを作成し、(view.ticker + view.currency)に一意のインデックスを作成できると思いました。ただし、私が知る限り、ビューにインデックスを作成することはできません。

4

1 に答える 1

1

MySQL でこの制約を指定することはできないと思いますが、トリガーを使用して、そのような組み合わせがまだ存在しないことを確認できます (存在する場合はエラーが発生します) ただし、ティッカー テーブルに挿入する前、および 3 つのテーブルすべてを更新する前に、トリガーが必要になることに注意してください。

于 2012-04-23T20:47:40.557 に答える