0
(0)

先日、情報処理試験対策・データベースの構築の基本についてレクチャーしました。
念のためにblogに残しておきます。

[amazon_enhanced asin=”4798122483″ container=”” container_class=”” price=”All” background_color=”FFFFFF” link_color=”000000″ text_color=”0000FF” /]  [amazon_enhanced asin=”4774144541″ container=”” container_class=”” price=”All” background_color=”FFFFFF” link_color=”000000″ text_color=”0000FF” /]  [amazon_enhanced asin=”4798021253″ container=”” container_class=”” price=”All” background_color=”FFFFFF” link_color=”000000″ text_color=”0000FF” /]  [amazon_enhanced asin=”4501549300″ container=”” container_class=”” price=”All” background_color=”FFFFFF” link_color=”000000″ text_color=”0000FF” /]

データの正規化
データの重複をなくすことにより、データの管理を容易にしたり、データを多様な目的に用いるのに有効な方法で、データベースの構築の基本になる技法です。

第1正規化は、繰り返しの部分を複数のレコードにして、繰り返しを排除する操作です。
→ 属性の値として、繰返しをもたない

第2正規化は、部分関数従属する項目を分離することです。
→ どの非キー属性も、主キーの真部分集合に対して関数従属しない

第3正規化は、主キー以外のキーに関数従属する項目を分離します。
→ どの非キー属性も、推移的に関係従属しない

データベースの正規化の目的
データの重複をなくすことにより、更新時の矛盾の発生を防ぐ等、データの管理を容易にしたり、データを多様な目的に用いるのに有効な方法で、データベースの構築の基本になる技法です

関係DBMSの機能
SQL文の適切な基本組合せについて

– GRANT文は、ユーザーに権限を付与する命令です。
→ 表の所有者や許された人だけが処理できる。

– COMMIT文は、現在のトランザクションを完了する命令です。
→ 正常終了したトランザクションの更新内容が、その後のシステム障害で無効になることはない。

– CREATE VIEW文は、ビューを定義できる。
→ ビューの定義をする。

略称の意味

CORBA (Common Object Request Broker Architecture)
OMGが定めた分散オブジェクト技術の仕様です。

DDL(Data Definition Language)
SQLの一部で、リレーショナルデータベースのテーブルを制御する言語です。テーブル全体の作成・変更・削除などを行なう際に使用します。

RDA(Remote Database Access)
遠隔データベースのアクセスの方式です。

RPC(Remote Procedure Call)
プログラムから別のアドレス空間(通常、共有ネットワーク上の別のコンピュータ上)にあるサブルーチンや手続きを実行することを可能にする技術で、遠隔手続呼出とも呼ばれます。

ACID特性とは
トランザクション処理が最低限満たすべき4つの条件です。

Atomicity (原子性)
→ トランザクションが完了したときの状態は、処理済みか未処理のどちらかしかない。

Consistency (一貫性)
→ データの物理的格納場所やアプリケーションプログラムの実行場所を意識することなくトランザクション処理が行える。

Isolation (独立性)
→ 複数のトランザクションを同時に処理した場合でも、個々の処理結果は正しい。

Durability (耐久性)
→ トランザクション処理においてデータベースの一貫性が保てる。

2相コミットプロトコルとは
調停者に障害が発生するポイントによっては、その回復処理が終わらない限り、参加者全員がコミットもロールバックも行えない事態が起こる。
→  調停者がフェーズ1の問い合わせ実施後に障害が発生すると、参加者はフェーズ2待ちで止まってしまい、調停者の回復を待つことになります。
→ 2相コミットプロトコルで調停者は必ず1つです。
→ 参加者は、フェーズ2のコミット要求を受信してからコミットを行います。
→ 調停者はフェーズ1の問い合わせに対し、全参加者から応答を受信しないと、フェーズ2のコミット要求は行えません。

分割格納方式について
一つの表に大量のデータを格納するとき、並列処理のために異なったディスクにデータを分割格納することがある。

水平分割方式
→ 主キーと外部キーの参照関係を保持し、関数従属性に従って異なった表に分割格納する。

格納順分割方式
→ データの発生した順に格納するディスクを変え、ディスクごとのデータ量が均等になるように分割格納する。

ハッシュ分割方式
→ 分割に使用するキーの値にハッシュ関数を適用し、その値に割り当てられたディスクに分割格納する。

キーレンジ分割方式
→ 分割に使用するキーの値をあらかじめ決めておき、その値に割り当てられたディスクに分割格納する。

SQL分の関係演算

直積:複数の表のすべての組み合わせを取り出します
選択:条件に合うデータを取り出します
射影:列を指定してデータを取り出します
差:EXCEPT句で、他方のSELECT文にのみ存在するデータを取り出す
和:UNION句で、2つのSELECT文の結果を結合します

一般的な SELECT FROM WHERE では、直積、選択、射影となる。

例題1

A,B,C,D,Eは、ある関係R の属性集合の部分集合であり、関数従属 A→BC, CD→E が成り立つ。これらの関係従属から導かれる関数従属は何か。ここで、XY はX とY の和集合を示す。

解:
・A→BC の両辺に D を加えると AD→BCD
・右辺のBCDに CD→E を適用すると BCD→BEになります。これは AD→BE と同じです。
・ここで、分解の特性を適用すると AD→BEは、AD→B かつ AD→E になります。

即ち、関数従属は AD→E である。

例題2

属性がn個ある関係の異なる射影は幾つあるか。ここで、射影の個数には、元の関数と同じ結果となる射影、及び属性を全く含まない射影を含めるものとする。

解:
属性がn個ある関係からの射影なので、n個の全て組み合わせになります。
射影を行うとき、各属性は選ばれるか、選ばれないかの2つしかないので、射影の個数としては2**nになります。

即ち、射影の個数としては2**nである。

■チェック項目(間違えやすいもの)

・UNION演算子
2つのSELECT文の結果を結合し、SELECT文の結果から重複する行が削除される。

以上

[amazon_enhanced asin=”4798122483″ container=”” container_class=”” price=”All” background_color=”FFFFFF” link_color=”000000″ text_color=”0000FF” /]  [amazon_enhanced asin=”4774144541″ container=”” container_class=”” price=”All” background_color=”FFFFFF” link_color=”000000″ text_color=”0000FF” /]  [amazon_enhanced asin=”4798021253″ container=”” container_class=”” price=”All” background_color=”FFFFFF” link_color=”000000″ text_color=”0000FF” /]  [amazon_enhanced asin=”4501549300″ container=”” container_class=”” price=”All” background_color=”FFFFFF” link_color=”000000″ text_color=”0000FF” /]

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

投稿者 斉藤之雄 (Yukio Saito)

Global Information and Communication Technology OTAKU / Sports volunteer / Social Services / Master of Technology in Innovation for Design and Engineering, AIIT / BA, Social Welfare, NFU / twitter@yukio_saitoh