4.テーブルの正規化(1/2)

キーワード: 正規化 主キー 外部参照

Wikipedia リレーションの正規化 から:

第1正規形~第3正規形の定義は、

関係 (リレーション) がスカラ値のみを持ちうるとき、そのリレーションを第1正規形 (first normal form; 1NF) であるという。

あるリレーションが、第1正規形で、かつ、すべての非キー属性が、すべての候補キーに対して完全従属するとき、第2正規形 (second normal form; 2NF) であるという。

あるリレーションが、第2正規形で、かつ、非キー属性があるならば、それら全てが候補キー非推移的に関数従属するとき、第3正規形 (third normal form; 3NF) であるという。

テーブルの正規化については、第1~第5正規形およびボイス・コッド正規形があるが、今回の講義では第1~第3正規形についてあつかう。

■Webclassコンテンツ の以下の資料を元に解説する。

>> ITパスポート試験学習教材

>>テクノロジ系対策コース

>>第9章 データベース

9.2 データベース設計(1) 9.3 データベース設計(2)

>>新基本情報技術者試験学習教材

>>テクノロジ系対策コース2

>>第3章 データベース

3.5 データベース設計(1) ~ データベース設計(5)

■@ITのデータベース正規化の解説記事が分り易くて詳しいので紹介

http://www.atmarkit.co.jp/ait/articles/0605/11/news124.html

演習課題1 XAMPP演習補足:

解説動画

※動画の最後の部分で、デザイナビューのコネクタを利用して外部キー制約の設定ができなかったと話しているが、設定可能である。

※ 条件1 外部キーの参照元フィールドが 主キー に設定されていること。

条件2 外部キーと参照元キーのデータ型が一致すること。

XAMPPでテーブル間のリレーションを設定する。

先週作成したテーブルのフィールドに 外部キー制約 を設定する。

・テーブルの構造 から relation view を開く。 → 外部キー制約を設定

・データベースのデザイナで確認

・外部キー制約を設定したテーブルにデータ追加・削除・修正

作業例)

※トラブル対応 外部キー制約でエラーになる → テーブルに登録済みのデータで、制約を満たさないものがるので修正する。(テーブルを表示して編集リンクから)

提出方法: phpMyAdmin の デザイナー 機能を利用して、テーブルのリレーションを確認する。 → スクリーンショットを第4回課題としてWebClassに提出する。

※トラブル対応 デザイナに外部キー制約のリンクが表示されていない → 表示切替ボタンを押す

第2回水曜日4時間目の補足

PHP のコードと SQLについて

基本情報処理技術者試験の過去問 を使ってデータベースの勉強

検索キーワード 例) 基本情報技術者試験 午前 過去問 正規化 → 平成20年度秋期 午前 問57 ・ 平成21年度春期 午前 問32 ・ 平成22年度秋期 午前 問29 など

(2016追記)

春のFE試験からデータベース関連の問題抜粋 参照元 基本情報技術者試験ドットコム http://www.fe-siken.com/kakomon/28_haru/

■午前問題 データベース関連

問26 関係モデルと関係データベースの対応 データベース方式

問27 関係Zを得る関係代数演算はどれか データ操作

問28 ACID特性 トランザクション処理

問29 外部キ一定義 データベース設計

問30 排他制御 トランザクション処理

問37 SQLインジェクション攻撃の説明 情報セキュリティ

■午後問題

問3 データベース 遊園地の入園情報を管理する 関係データベース

(2015追記)

春のFE試験からデータベース関連の問題抜粋 参照元 基本情報技術者試験ドットコム http://www.fe-siken.com/kakomon/27_haru/

■午後問題

問26 3層スキーマアーキテクチャ データベース方式

問27 ストアドプロシージャの利点 システムの構成

問28 移動表のa,bの適切な組合せはどれか データ操作

問29 データ項目の命名規約 データベース設計

問30 クエリを実行するまでの処理の流れ データベース方式

問47 E-R 図の説明はどれか ソフトウェア要件定義

■午後問題

問3 データベース 自治会員の情報を管理する関係データベースの設計及び運用

設問1は、これまでの学習内容で回答できる。解いてみること。

この問題の表は、第1正規形に直した時点で、既に第2正規形の条件を満たしています。

よって、答えは 第1正規形 と 第3正規形 を語群から選ぶことになります。

※会員表の主キーは、会員番号の1つだけ。複合キーではないので、主キーに非候補キーが部分従属することは起き得ない。つまり非候補キーはすべて主キーに完全従属するので第2正規化も完了している。

・設問2以降は、SQLに関するものなので、数回後の講義で解説予定。

演習課題2:

導出項目: レコードの記載内容から導かれる項目 例1)生年月日 → 星座 や 十二支 例2)定価x個数 →小計 →合計

導出項目は、テーブルの設計上は記録不要。ただし処理の効率化のため、あらかじめ導出内容を記録する場合もある。

注文番号

注文主

届け先

合計金額

の様な注文記録用テーブルを第3正規形にまで修正した結果のテーブル全て(4個を想定)を示せ。

テーブルの記述は、フィールド名を()でまとめ、主キーのフィールド名の先頭に ○ を付けること。

ヒント:

(○注文主、届け先) ※注文主は複数の届け先を登録できないものとする。さらにある届け先に複数の注文主がいてもよい(例 :兄が注文主、妹が注文主)

(○?、○?、 ?)

(○?、?、 ?)

(○?、 ?)

の4テーブルが必要

回答方法: Webclass の 第4回課題

演習課題3:

↑に掲載した、FE2015 の午後問題、 問3 データベース で扱っているテーブルを、XAMPPで作成し、

レコードを問題文を参考にして追加する。

データベースを新規に作成する。テータベース名は適当に決める。

この課題作成においては、テーブル名やフィールド名は 日本語文字 を利用してもOK

今後の課題、とくにWebシステムやCakePHPなどフレームワークを使用する課題においては 名前 は 英単語で日本語入力OFF を使用すること。

テーブルの設定 と レコードが分る様に工夫して、スクリーンショットを撮影しWebClassにアップロードする。

回答方法: Webclass の 第4回課題