1

ユーザーが賭けを作成できるアプリケーションの開発を開始しています。次のスキームが与えられた場合

TABLE Player
  PlayerID PRIMARY KEY
  PlayerName 
  (...)

TABLE Bet
  BetID PRIMARY KEY
  BetName
  (...) 

TABLE plays_in
  BetID
  PlayerID
  PRIMARY KEY(BetID, PlayerID)
  FOREIGN KEY BetID
  FOREIGN KEY PlayerID

(BetName, PlayerID) の一意性を定義して、ベットが同じ名前を複数回持つことができるようにすることはできますか? 特定のプレーヤーが「MyFirstBet」という名前の賭けに 1 回だけ参加できるということですか? 上のプレーヤーとこの賭けをしない他のプレーヤーは、彼の賭けに一度「MyFirstBet」という名前を付けることができるはずなので、賭けの名前をプライマリキーまたは一意として定義したくありません。可能であれば、そのためにも余分なテーブルを作成することは避けたいです。これは、DBMS ではなくコードで解決する問題ですか?

4

3 に答える 3

4

「BetName」をテーブル「plays_in」に移動します。

TABLE plays_in
  BetName
  PlayerID
  PRIMARY KEY(BetName, PlayerID)
  FOREIGN KEY PlayerID

次に、テーブル「ベット」をドロップします。

于 2013-06-02T00:58:04.257 に答える