- ベストアンサー
データベースにおける二重キーとは?
データベースにおける二重キーとは何のことでしょうか。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>ありがとうございます。同じデータが二回作れないようにするための考えなのですね。 そそ、 同じ人はデータベース的に何番でも一人ですからね! その違いですよ。 UniqueとIndexを覚えると、かなり道は開けますよ! ただし。 すぐに、それが元でのトラブルも経験すると思います。 AがBというテーブルを参照してる状態の時、 Aの何かを削除できない!というような感じの! (Indexなどを無視すればいいんですが、スマートではないなど) この辺は、やっていくうちにわかりますよ!
その他の回答 (2)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
もしかして、ユニーク(unique)の事? id = 主 primary+unique だとしても、追加でuniqueを追加することもありますよ。 table user_data id = 主 primary unique user_id = ユーザーID unique sex = 性別 index. -> relational m_sex.id (m_sex.idと同サイズの型で宣言) table m_sex id = 主 primary unique text = varchar 256 ={ 1,"男" 2,"女" 3,"その他" } とすると、元々のuser_dataは 同じユーザーは「2回作れない」 sexには、m_sexにある値が自動参照されるようになる。 INSERT INTO user_data (user_id,sex) values (XX,YY) ON DUPLICATE KEY UPDATE sex=YY; と記入できることになります。 ユーザーがいなければ新規で、sexにYYを代入し、 すでにいるユーザーなら、sexをYYで更新する。 を1回で実行できるようになります。 のように、データベース上で「唯一のデータになる!」 って状態を宣言するのが、uniqueです。 また、特定カラムが特定の値しか持てないように 参照先を決め打ちしていくのが、index 当たり前ですが、決め打ちしてるので、検索も早くなります。 m_xxxxは通常ユーザーが書き換えないもの=つまりマスターデータ それ以外をuser_xxxxとして、ユーザーが書き換えるテーブルとして 名称を固定してます。
- bardfish
- ベストアンサー率28% (5029/17766)
キーとして設定されている項目の値が重複していること。 Primary Keyの事だと思いますが、Primary Keyは基本的に重複を禁止しています。 設定できる列も一つではなく複数設定できる。 と言うことは、売り上げデータを年、月、日という列もしくは年月日という列だけで識別しようとした場合、売り上げが一日一つだけなら問題ないけど一般的には一日の売上品は複数になる。とすると、年月日の他にユニークとなる項目が必要となる。 これら識別するための項目の内容が重複した場合、月末の棚卸しなどでどの売り上げが原因か突き止められなくなってしまう。 だから、二重キーを禁止にする必要性があるものではプライマリーキーは必須となる。 それとは別に、キーとして設定された項目で抽出したり並べ替えするときに高速処理が可能となる。インデックスとも言う。 プライマやインデックスに指定されてない項目もしくは組み合わせの項目で抽出や並べ替えを行うと結果を得るまでの時間が長い。そのテーブルのレコード数にもよるが、数万件程度なのに十数秒待たされることもある。これがキーが設定されていると1秒もかからずに結果を得ることができる。
お礼
ありがとうございます。冒頭にどういうことか短く書いてありわかりやすかったです。
お礼
ありがとうございます。同じデータが二回作れないようにするための考えなのですね。