全検索はSELECT * FROM で
SQLって何の略なんでしょう?
一応、Structured Query Language の略ということになっていますが、製品のSQLから来ているとも言われています。
読み方は、「エス・キュー・エル」と言ったり、「シークェル」と言ったりしますね。
フリーで有名な「MySQL」は「マイシークェル」でも良いですし、「マイ エスキューエル」でも良いと思います。
さて、
設計をするときのデータモデルと、SQLで一般に使われる用語に違いがあります。
が、まぁ、同じことを言っているので、ちょっと表にしておきます。
データモデル | SQL |
関係(リレーション) | 表(テーブル) |
属性 | 列 |
タプル | 行 |
となります。ここのブログでは、SQL用語のほうを使っています。
最初は、全検索の方法です。
こんな風な手帳テーブルがあるとして、
全てを検索する場合は、
SELECT * FROM 手帳
のようにします。
全ての列を検索する場合は、「*」(アスタリスク)を使います。
第三正規形では補助テーブルを使う
大抵のデータベースは、第二正規化ぐらいで大丈夫です。
ですが、もう少し複雑な場合には、第三正規形というものがあります。
第二正規形と第三正規形との違いは、
どの候補キーに対しても推移的に関数従属でない
という言い方をしますが、ええ、訳が分かりませんね(苦笑)。
具体的に、趣味の表を使うと、こんな感じです。
こんな風に年上の彼に○印を付ける列を加えました。
これを普通に、第二正規化まですると、
個人テーブルに、年上の○×が付くのですが、この年上の列って、「年齢」と「年上」だけに分離できますよね。
ってのが第三正規形です。
こんな風に、年上テーブルみたいなのを作れば、簡単に年上が分かりますよね。
ってことです。
正確にはちょっと違うのですが、まぁ、普通のデータベースの設計ではここまでやりません。
第2.5正規化と言って、あまり厳密に第三正規化しない方法が多いのです。
ダブりを一か所にまとめて第二正規形
第一正規形では、趣味の行を簡単にしましたね。
でも良く見てください。
趣味の欄で、「旅行」や「車」などがダブっていますよね。
例えば、「車」を「くるま」に変えようとすると、3か所のデータを変えないといけません。
これは大変ですね。。。とデータベースは考えるわけです。
この趣味の列を別のテーブルにして、個人のIDと趣味のIDを結びつけます。
これが第二正規形ですね。
趣味の「車」や「旅行」などの文字がダブらなくなりました。
これで、趣味の名称を変えたいときは、一か所だけ変えればよくなります。