はdog_idは、主キーとがが一意であるOWNER_IDある場合は、私はテーブルの犬リレーショナルデータベース(特定のケース)でリソースを共有するにはどうすればよいですか?
mysql> select * from dogs;
+----------+-------------+----------+
| dog_id | tail_length | owner_id |
+----------+-------------+----------+
| dog-id-1 | 1 cm | owner-1 |
| dog-id-2 | 2 cm | owner-2 |
| dog-id-3 | 3 cm | owner-3 |
+----------+-------------+----------+
を持っていると言います。 今、私は犬の共有が可能であることを願っています。テーブルができるように。 がが主キーであるdog_idとがは、テーブル内で一意であるOWNER_IDとして
+----------+-------------+----------+
| dog_id | tail_length | owner_id |
+----------+-------------+----------+
| dog-id-1 | 1 cm | owner-1 |
| dog-id-2 | 2 cm | owner-2 |
| dog-id-3 | 3 cm | owner-3 |
| dog-id-3 | 3 cm | owner-1 |
| dog-id-3 | 3 cm | owner-1 |
+----------+-------------+----------+
は、しかし、それは不可能です。犬は10000人以上のユーザーと共有することができます。
下位互換性の制約のため、元のテーブルの主キー制約と一意キー制約を削除することはできません。このためにはmysqlを使用する必要があります。共有を達成するための最良の戦略は何でしょうか?
追加の制約:私はdog_idを介してのみ照会でき、owner_idは照会できません。
になるのですがなぜ古いテーブルも関係していますか? 「dog_idを介してのみ照会でき、owner_idではない」とはどういう意味ですか?犬とオーナーに(dog_id、owner_id)ユニーク&FKを持つdog_id&owner_idの表の明白な解決法には問題がありますか? – philipxy
* "私はdog_idだけで、owner_idでは照会できません" * 通常、ユーザーからの入力としてdog_idが取得されるため、テーブルからdog属性と所有者IDを取得します。 dog_idには主キーがあり、owner_idには一意のキーがあります。私は本当にそれを変更することはできません。 Bill Karwinが指摘しているように、これは古典的な多対多の関係であり、接合テーブルを使用して解決されます。おそらくそれを使用しています。 – user3184974
'owner_id'の一意性制約を取り除けない場合、このテーブルを使用することはできません。期間。フルストップ。 –