- ベストアンサー
主キーについて
お世話になります。 現在個人でMysqlとphpを使ってモバイルサイトを構築しています。 そこで初歩的な質問なのですが、主キーを日本語で指定する事は 可能なのでしょうか? Mysqlの事が詳しく書かれているサイトなどを見て調べてみました が、どれも主キーとなる値は数字で指定され、解説されていまし たので疑問に思いました。 私自身は個人の趣味でデータベースを構築しようとしていますが 業務として構築を行う場合はやはり数字で指定するのが当たり前 なのでしょうか? 皆様のような技術者様からしてみれば、?な質問かもしれません が何卒、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
主キーに求められるただ一つの約束は、「ありとあらゆるデータの中から総てのレコードが一意に識別できる」事・・・ ただ、それだけです。 ですから、この世の中に同姓同名の人間は絶対にいないと、あなたのシステムで宣言するのであれば、氏名欄を主キーにすることに何ら不都合はありません。 ただ、普通、文字で単語として(日本語に限りません。英語でもフランス語でも事情は一緒)書かれるフィールドって、何かの名前であることが多く、しかも、名前というのは大概の場合重複するものです。よって、普通は主キー候補になりません。ただそれだけのことです。 まぁ、こんな事から、普通、ID欄という人間が人為的に、絶対に重複しないことを約束したフィールドを別途作って、それを主キーにしているだけのことです。何らかの名前や属性が重複しないことを証明するよりID一個作る方が楽ですから。 ただ、世の中には、絶対に重複しないことが約束されている文字列欄(または、文字列欄の組)というのも存在しますから、そういう場合は、わざわざID欄を作るのは不自然ですね。その文字列欄を素直に主キーにするでしょう。 つまり、主キーを何にするかは、構築するシステムが表現する実世界に依存するということです。
その他の回答 (1)
- athanasius
- ベストアンサー率37% (361/964)
別に出来ますよ 普通はしないだけで 私も独学だから大きいことは言えませんが 一意制約とデータのインデックスの為に使うものなので確実に全部違うことを保証出来ないものは使うべきではないだけ 名前みたいなものなんかを主キーにしたくなるときもあるだろうけど そういうものが結構ダブルことあるからまともならやらない 細かいことは正規化のことを調べれば解ると思います
お礼
正規化について調べてみました。 たしかに私の作ろうとしているもので同姓同名の人間がいないとは限りませんね。 ありがとうございました。
お礼
すごくわかりやすい説明で大変参考になりました。 データベースの勉強を始めるにあたり、主キーや正規化についてよく理解しないまま設計をしていたようです。丁寧な説明で頭の中がすっきりしました。もう一度設計を見直してみようと思います。ありがとうございました。