0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DBMSと関係データベース

Last updated at Posted at 2022-08-06

データベースの初め

さまざまなデータが存在する。その中にデータ同士が繋がっていることもある。
また更新時期も別々になる。
なのでややこしい。
そこでデータベースを使う。データの基地とも言える。

データベースの目的

データペースは、アプリケーションのデータを保存蓄積するための一つの手段
複数の利用者が大量のデータを共同利用する用途で強みを発揮する。

データベースは一元的に管理する

これはシステムやユーザの扱うデータを一元的に管理する。
一元的とは何かが中心となって全体が統一されること。
データの読み書きはデータベースが管理する。

データベースの種類

データベースの種類は
関係型データベース
階層型データベース
ネットワーク型データベース
中でも主流は関係型データベースやRDB(リレーショナルデータベース)と言われている。

データベースと表の関係

データベースはデータを溜め込めることを目的としている。
表計算は表を作ることが目的としている。
なので
データベースがデータを与え、それを基に表計算ソフトが整形して表示する。

インデックス

インデックス(索引)は、データベースの性能を向上させる方法の一つです。インデックスは「探すレコードを識別するデータの項目」「対象レコードの格納位置を示すポインタ」で構成されており、これを利用してデータの格納位置を特定し、その位置を直接アクセスする事で、表の検索速度を上げることができます。
出典 https://atmarkit.itmedia.co.jp/ait/articles/1703/01/news199.html

インデックスの設定

膨大な量のデータをデータベースに格納されている場合、データ検索には時間がかかる。そこで、アクセス頻度の高い列に対して、検索の手がかりとなるインデックスをあらかじめ設定しておくことで、検索効率の向上を図る方法が用いられている。

インデックスの実現方法

木構造を利用したB+木インデックス、一意に特定するハッシュインデックスがある。
後者は一致検索では高速化を実現できるが、範囲検索や不一致検索は使えない

DBMS

アプリケーションから簡単に扱えるようにしたのがデータベース管理システムというミドルウェア

データベースの定義機能

データベース作成を行う機能。
データスキーマを決定し、与えられた論理構造からの物理構造を決める。
データ定義言語(DDL)を用いる。

データベースの操作機能

データに指示を出し、データベースへの操作を行う機能。データベースへの操作(検索・抽出など)は、データ脳格納場所や、アクセス方式などを詳細な情報を知らなくても可能。
操作は、データ操作言語(DML)を用いる。

データベースの管理(制御)機能

データベースは複数で使う。矛盾が生じないようにデータを保つことが必要だ。そのために保全機能(排他制御、障害回復など)、データ機密保護機能(アクセス制御、データの暗号化など)といった機能を持つ。

アクセス権

ユーザIDやパスワードを使ってユーザ認証を行う。
ユーザの属するグループごとにアクセス権限を設定し、権限外のデータアクセスを防ぐ

気づき

データベースはデータの基地とも言えるのか。今までデータベースとしか捉えていなかった。
かっこいい。
一元的の説明をもっと知りたい。

一元的とは?

さまざまなものを一つのものとして捉えるのか。

データベースと表計算ソフトの関係性が取り出しそれを整形している関係であることがわかった。

関係データベースは表、行、列でできている。

関係データベースは表の形でデータを管理している。
データ一件が一つの表として記録されているイメージ。
この行が複数集まることで表の形が出来上がる。

表、行、列の別の呼び方

表(テーブル)複数のデータを収容する場所
行(レコード、組、タプル)一件分のデータを表す。
列(フィールド、属性)データを構成する各項目を表す。

定義域(doamain: ドメイン)

各列(属性)が取りうる値(データ型や各桁及びその範囲など)の集合

関係データベースの由来

データの内容次第で複数の行を関係づけして扱うことができるから。
この関係をリレーションシップという。

気づき

タプルやレコードや組の違いは何か?

データベースの関係型、OSの機能、データベース管理システム、表計算ソフトで呼び方が違うようだ。
出典 https://ascii.jp/elem/000/000/486/486127/img.html
また色々あるかもしれない。

表を分ける「正規化」という考え方

関係データベースでは蓄積されているデータに矛盾や重複しないように表を最適化するのがお約束だ。
新しい情報と古い情報が混在することを予測できる場合は表を分割してする。
これを正規化という。

p292の図ので部署名が変わる場合この表のレコードを全部書き直さなければならなくなる。
そうなると修正漏れが生じてくる。
なので分割(正規化)するとこの手間と修正漏れがなくなる。

正規化することは矛盾や重複を未然に防ぐことを意味する。

関係演算とビュー表

表がどんどん分割されて、細切れになった表が一つあっても使い物にならないようになる
どのデータを溜め込んで効率的になるか?
溜め込んだデータは活用できなきゃ意味がない。
なので関係演算が出てくる。

関係演算

関係演算とは特定の行や列を取り出したり、表と表をくっつけて新しい表を作り出したりする演算のこと。
演算は選択射影、```結合``の3つだ。`

選択

行を取り出す演算。
特定の条件に合致する行だけを取り出す。

射影

列を取り出す演算。
特定の条件に合致する列だけを取り出す。

結合

表と表をくっつける演算。
共通の列を介して2つの表をつなぎ合わせる。

ビュー表

関係演算を行い、仮想的に作る一時的な表のことを言う。

集合演算

複数の表を併合する操作。
併合後の表に行の重複はない

表a-表bの演算。
表aにあって表bにない行の表が作成される。

2つの表に両方存在する行からなる表を作成する。

直積

2つの表を掛け合わせる操作。
行の数は、それぞれの表の行数をかけた数になる。

データ構築

データベースの構築には、現実世界のデータをどのように構造化して、コンピュータ内部で表現するかを考える必要がある。これをモデル化という。
データベースの構造を表す仕様をスキーマという。

スキーマ

データベースの構造や使用を定義するもの。
標準的に使用されているANSI/X3/SPARC規格では三層スキーマ構造をとっています。
これは外部スキーマ概念スキーマ内部スキーマと3つの層に分けることでデータの独立性を高める。

外部スキーマ

利用者の必要とするデータの見方を表現する
ユーザやプログラムに対して必要なデータだけを提供する。
プログラムに加えた変更は、このスキーマまでしか影響しません。

概念スキーマ

データの論理的関係を表現
プログラムからもハードウェアからも切り離されているのでどこにも依存せず、データの独立性が保たれています。

内部スキーマ

データの物理的関係を表現
ハードウェア的な変更はこのスキーマで影響を吸収します。
物理的に記憶させてるハードウェアが変わっても、プログラムの修正は必要ない。

気づき

三層スキーマの説明がなんか腑に落ちない。
もっと説明を聞こう。

三層スキーマとは?

  • 外部スキーマはシステム利用者であるユーザー、もしくはアプリケーションから見たデータベースのデータ構造やデータの関係を定義するスキーマであり、言ってみれば「ユーザーから見たデータベース」です。データベースのビューに相当します。(ビュー以外に、実際の画面に出力するデータのことも含みます。)

    概念スキーマは「開発者から見たデータベース」です。概念スキーマの設計を「論理設計」と呼び、データベース設計の中で重要な位置を占めます。

    内部スキーマは「DBMSから見たデータベース」です。コンピュータ上で動く以上、データベースのデータもその実体は「ファイル」となります。そのファイルをディスク上にどのように格納するかを定義します。内部スキーマの設計を「物理設計」と呼びます。

    このようにわざわざスキーマを3つの階層に分けるのは、例え、ひとつのスキーマに変更があったとしても他の2つのスキーマは影響しないようにするためです。(そのように各スキーマが独立していることをデータ独立性と言います。)

    実際の開発現場では仕様変更対応の連続です。その際、ひとつの変更がデータベース設計全体に影響を受けてしまっていては、開発工数がいくらあっても足りません

    3層スキーマの思想に従って設計していれば、変更の範囲を局所化することができるでしょう。3層スキーマは、変更対応を可能な限り少ない労力でできるようにと、先人たちが編み出した知恵というわけです。
    出典 http://db-study.com/archives/36

  • 外部スキーマ
    ユーザーの視点からデータベースの構造を定義したスキーマのことです。アプリケーションの開発者側からみた構造や、データの指定方法などを示したもので、具体的にはSQLによるビューがなどが外部スキーマの代表例です。データベースの利用者側から、当該データベースがどうみえるかを定義したものといえるでしょう。

    ※SQL(Structured Query Language):リレーショナルデータベースを操作するための言語で、国際標準規格として決められている。ユーザーはSQLを使ってデータベース管理システムに命令を出し、必要なデータを検索・利用することができる。

    概念スキーマ
    開発者側からみたデータベースで、保存するデータの要素やデータ同士の関係性を定義します。リレーショナルデータベースでは、データをテーブルに格納しますが、このテーブルを作成するための設計図と捉えることができます。

    内部スキーマ
    概念スキーマによって定義したデータを、どのようにデータベースに格納するかを決めるものです。データベースの物理設計の段階で決められます。

    ※データベースの物理設計:データの格納方法や管理方法を決めることで、システムの要件に合致した物理的な設計を行う段階を指す。その前段階として、データベースの構造が決められており、これを論理設計と呼ぶ。
    出典 https://meetsmore.com/product-services/databases/media/99441
    SQLを使って表を表示していたがあれが外部スキーマなのか。
    概念スキーマは保存するデータの要素やデータ同士の関係性を定義されているのか。
    内部スキーマはどのようにデータベースに格納するかを決めるもの、データベースの物理設計の段階で決められる。

とりあえずこのスキーマの役割がわかった気がする。

問題を解いた時の気づき

埋め込みSQLとは?

アプリケーション・プログラムに記述されているSQL文のこと
出典 https://docs.oracle.com/cd/E57425_01/121/LNPCC/GUID-D244197E-032F-4F23-81FF-F6985A80739C.htm#:~:text=%E5%9F%8B%E8%BE%BC%E3%81%BFSQL%E3%81%A8%E3%81%AF%E3%80%81%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3,%E5%9F%8B%E3%82%81%E8%BE%BC%E3%82%80%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82

プログラムの中にSQL文が含まれていることを指すのかな。

出典

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?