Magic xpa 初心者のお勉強部屋 -2-
<"RDB"の基本用語>
"RDB"はデータを二次元の表形式で扱います。
こんな感じです。
この例では4行のデータがあります。
"RDB"では、行を"レコード"と呼びます。
また、列(項目)を"カラム"と呼びます。
"LOGIN_ID"や"LOGIN_PASSWORD"のことです。
そして、行と列を合わせた表全体を"テーブル"と呼びます。
次に"インデックス"について説明します。
"インデックス"は"索引"と呼ぶこともあります。
"SQL Server Management Studio"では、このように表示されます。
"インデックス"の目的として、次の2点を覚えておきましょう。
1. 検索の高速化
2. 一意性
まず、"検索の高速化"について。
データを探すとき、効率を考えず最初から最後まで順番に見るという方法では、データが増えると検索時間も増えてしまいます。
例えば、10年間で蓄積されたデータが100万件あったとします。
この中から、あるデータを探すために順番に見るのでは、何件のデータを見れば当たりに出会えるのか不安になります。
しかし、何年何月何日の中に目的のデータがあると分かれば、探す件数は大幅に減るので当たりが見つかるまでの時間も短くなると期待できます。
これが"インデックス"の効果です。
辞書や電話帳を使って検索するときも同様の機能を活用しています。
"さ"行は、ここからここまでの範囲にありますとか、この職業であれば電話帳の何ページ以降に記載されていますとか、それが"索引"の効果です。
データベース内部に"インデックス"を作ることによって、上記と同じように検索効率を高めることが可能になるのです。
次に、"一意性"について。
業界用語としては一般的に"ユニーク"と表現します。
"ユニークインデックス"や"ノンユニークインデックス"です。
"ユニークインデックス"は重複不可、"ノンユニークインデックス"は重複可です。
複数レコードで同じ値を持つことを許可するのか、という設定です。
上図の例では"LOGIN_ID"がユニークインデックスです。
"田中実"さんとか"鈴木実"さんは、同姓同名の人が多いようです。
従って、名前だけではユニークにならない、ということになります。
同じ名前の人が何人いても、"この人"という決定ができることをユニーク性と呼びます。
会員マスタを定義するとき、"会員名"で検索したいけど、ユニーク性を確保するために"会員ID"という項目で判定できるようにした、という場合。
一つ目のインデックスとしては"会員ID"です。
二つ目のインデックスとして"会員名"で"ノンユニークインデックス"を作成することもできます。
ですが、二つ目のインデックスは"会員名"と"会員ID"を組み合わせて"ユニークインデックス"にすることも実用的です。
Magic xpa で使うなら、"ノンユニークインデックス"を避けた方が良いというのが経験的な感覚です。