# Chapter11-1 「DBMSと関係データベース」 ## 5/30(日) ###### tags:`基本情報技術` さつき: * 関係データベース * 表を分ける「正規化」という考え方 * 蓄積されているデータに矛盾や重複が生じないよう、表を最適化する。 * [正規化の要点を理解する](https://qiita.com/mochichoco/items/2904384b2856db2bf46c) * DBに矛盾が発生しないよう、実装、運用、仕様でカバーするといった方法も考えられるが、コストがかかる。 * 正規化の手順で理解しておく単語 * 正規化はmysqlなどのRDB製品ではなく、RDB理論上の考えです。 * 第3正規系までの正規化手順を理解するにあたっては下記RDB理論上の用語を理解しておく必要があります。 * 候補キー * 非キー属性 * 関数従属性 * 部分関数従属性 * 推移関数従属性 * 関係演算とビュー表 >細切れのデータがたくさんできても、「部署名」と「Id」だけが書かれている表だけだと、なんのデータかわからない。 * どうデータを埋め込んでいけば効率的か→溜め込んだデータを活用する。 * 選択、射影、結合など * スキーマ * 意味は「趣旨、概要」 * データベースの構造や仕様を定義するもの * 外部スキーマ...利用者の必要とするデータの見方を表現する >ユーザやプログラムに対して必要なデータだけを提供します。 >プログラムに加えた変更はここまでしか影響しない。 * 概念スキーマ...データの論理的関係を表現します >DB本体。プログラムからもハードウェアからも切り離されています。 * 内部スキーマ...データの物理的関係を表現します >ハードウェアの変更はここで吸収する * 過去問 * 問1 OK * 問2 ふむ。OK * 主キー * 行を特定する鍵のこと * 複数の列を組み合わせて複合キーにすることも。 * 過去問 * 問1 * キー値が空でないこと、重複していないこと * 問2 * ちさと: * DBMS(データベース管理システム) * ミドルウェア * データベース機能をアプリケーションから簡単に扱えるようにしたもの。 * 種類 * 関係型データベース * 表の形でデータを管理 * 表(テーブル) * 行(レコード) * 列(フィールド) * 関係=複数の表を関連づけて扱えるから * リレーショナルデータベースともいう * 正規化 * データに重複や矛盾が起きないように、表を分割したりして最適化する * 表がどんどん分割されて、細切れの表がひとつあってもわからなくなる… * そこで出てくるのが、関係演算 * 表と表をくっつけて新しい表を作り出す演算 * 選択 * 特定の条件に合う「行」だけを取り出す * 射影 * 特定の条件に合う「列」だけを取り出す * 結合 * 共通の列を介して表と表をくっつける * このように関係演算を使って作った一時的な表を「ビュー表」という * スキーマ * データベースの構造や仕様を定義 * アプリケーションプログラムとDBMSを分離させることが目的 * 3層スキーマ構造 * 外部スキーマ * ビュー表 * プログラム寄り * ユーザやプログラムに対して必要なデータだけを提供 * 概念スキーマ * データベース本体 * プログラムからもハードウェアからも切り離されている * 内部スキーマ * 物理的にどう記憶させるかの定義 * ハードウェア寄り * 過去問 * 問1:タプル…データ構造のひとつ。複数の値をもつこと * 問2:おk * 主キー * データベースには、行ひとつひとつを識別するためにキーとなる情報が含まれている * 例)社員番号 * 個人を識別するには名前じゃダメなのか?→同姓同名の時に識別できない! * 複合キー * ひとつの列だと一意にならないけど、複数だと一意になるやつ * 例)1列め「6年生」、2列め「3組」、3列目「出席番号16番」 * ひとつひとつは一意じゃないけど、3つ合わさると一意になる「6年3組出席番号16番」 * 外部キー * 他の表の主キーを参照する列のこと * 過去問 * 問1:キー値が重複していないこと、キー値が空でないことが主キーを構成する列に必要な条件 * 問2: