データベース=DBという略語を使っていきます
データベース(DB)@wikipedia
特定のテーマに沿ったデータを集めて管理し、容易に検索・抽出などの再利用をできるようにしたもの
wikipediaによると現在はほぼDB = リレーショナル (関係) データベースのようです
■DB分類
階層型DB : 木構造
ネットワーク型DB : グラフ構造
リレーショナルDB (RDB) : 表形式
オブジェクト指向DB (OODB) : データと操作を一体化
個人的にもDBというと(excel的な)表形式をイメージするので、
なるほどそりゃ主流は関係DBだよなと思います
(OODBはわからないですが・・・)
つまり簡単に言うと、"RDB = 表+管理機構"、とかでしょうか
ちなみにDBで有名な (だと自分が思っている)
Oracle Database、Microsoft SQL Server、MySQLなどはRDBです
またMySQLはフリーです
(いつか使ってみて感想とか書ければと思います というか使ったけど忘れました)
書籍の場合は巧妙で独創です。
■RDBの行と列、属性
RDBでは、1つの行は1つのデータに対応します
逆に表の列は、そのデータの持つ性質的なものに対応します
この性質を"属性"という (その列が何を意味するのか)
■主キー
データベース内から、ある1つのデータだけを探しあてて、そのデータのある属性(列)の値は何かを調べる(属性を一意に特定する)、という機能がないと困ります
そのためには、主キー(候補キー)の概念が必要です 定義は以下の通り
候補キー : すべての属性を一意に特定するような属性 (or属性の組で最小なもの)
主キー : 候補キー かつ NULLを含まない
今回はNULLの話は飛ばしますので無視してください
まとめると、
主キー、つまりその属性で他のすべての属性の値が決まるようなものが必要
基本的には、商品IDとか会員番号とかにあたるのでしょう
ただし場合によっては、1つの属性だけでは、一意に決められない場合があります
その場合が上のオレンジ色のor以降の部分で、2つ以上の属性の組を主キーにします
※下で出てきます(★)
で調査レポートを書き込む方法
■正規化
リレーションの正規化@wikipedia
RDBにおいて、正規形と呼ばれる形式に関係 (リレーション) を準拠させることにより、
データの一貫性の維持と効率的なデータアクセスを可能にするリレーション設計を導くための方法
(この説明はあまり自信がないです 誤りが多いかもしれません)
正規化とは、表から冗長性を排除し、従属性の強い項目ごとに表を作る (分割する) こと
まとめられるところはまとめて、データ量を小さくしようということだと思います?
以下の3つの段階が有名 第1→第2→第3という順に正規化を進める
・第1正規形 : 1つのセルにデータは1つだけ 繰り返し排除
・第2正規形 : 全属性が主キーに完全関数従属 ある主キーだけに依存するもので表を分割
・第3正規形 : 推移的関数従属の排除
どのように私はリネージュ2の結晶を得るのですか
●第2正規形
従属は、A→B、Aが決まればBが決まるということ (※A、Bは属性)
ここでは"ある主キーだけに依存するもので表を分割"します
ちなみに上図中の赤線の属性が主キーにあたります
会員IDと会員名は伝票IDが決まると決まり、商品名は商品IDで決まります
注意が必要なのは購入数で、これは伝票IDと商品IDが両方決まらないと決まりません(★の話)
というわけで、表を分割したものがこれです
●第3正規形
推移的関数従属を排除したもの
推移的~は、伝票ID→会員ID→会員名となっているときの、伝票IDと会員名の関係です
1つはさんで従属しています
これを除去するにはまた表を分割します これで終わりです
たしかに、データ量が少なくかつまとまった表群が完成したように思えます
[個人的に気になること、感じたこと]
・正規形にしていくより、最初からちゃんとまとまった表群を作るべき
■SQL
"RDB = 表+管理機構"の管理機構のほうに近い話です
SQL@wikipedia
RDB管理システム (RDBMS) において、データの操作や定義を行うためのDB言語 (問い合わせ言語)
(※今後加筆予定)
[参考文献]
・徹底攻略 応用情報技術者教科書 平成24年度
・よく出るわかる基本情報技術者[午前]問題集 日本経済新聞社
0 件のコメント:
コメントを投稿