📘

DB学習メモ

に公開

DBがファイルシステムから独立している理由

DBMS以前はデータをテキストやCSV形式でファイルシステム内で管理していた。それでは、プログラムが同時アクセスすることができず、セキュリティも弱い。
そこで、DBMSでデー管理をファイルシステムから独立させることで、複数のアクセスや処理実行の制御やセキュリティの保護ができる。

リレーショナル型のデータベースが使われる理由

データを表で管理し、IDで識別するだけでデータを簡素に扱えるから。
初期の階層型データベースでは、データベースが親子関係で固定されており、データの重複が発生しやすかった。この重複は、データの更新の手間や編集漏れを引き起こし、データの整合性の維持が難しくなる。また、記憶装置の使用容量の無駄にもなる。
この問題を解決するために、ネットワーク型データベースができた。これは、データを網のように結びつけることで、1つのデータが複数の関係を持つ多対多の関係を表現できるようになった。
しかし、データ間のつながりが複雑に管理されるためデータの構造の把握が困難となり、開発や保守が難しい。
これらを解決したのがリレーショナル型データベースである。データを行と列で区切った表(テーブル)で管理して、一意のID(キー)で各データを識別することで重複を防ぎ、関係性を外部キーで表現できるようになった。
また、ファイル構造に依存せずにSQLなどの言語を通じて、データを制御、操作できるためアプリ開発とデータ管理の役割を分けて、それぞれに特化した設計が可能になった。

スキーマとスキーマオブジェクト

データベースでテーブルを操作するときには、ユーザーとしてアクセスする必要がある。ユーザーごとにスキーマという作業領域が与えられて、ユーザーはその中でテーブルや他のオブジェクトを作成、管理できる。
自身のスキーマにあるテーブルは自由に操作できるが、他のユーザのスキーマにあるテーブルを参照、操作するにはアクセス権限が必要になる。個別の権限をまとめたものをロールと呼ぶ。
スキーマの中には、テーブルの他にテーブル内の検索を高速化するインデックスや一連の処理をまとめたストアドプログラムなど、様々なオブジェクトがある。これらはまとめて、スキーマオブジェクトと呼ぶ。それらは、データベース内のデータディクショナリというメタデータ群によって管理され、名称、酒類、所有者などの情報をもとに検索、参照、制御が可能になっている。

インスタンスとデータベース

インスタンスはメモリ上にある、データベースを操作するためのメモリ領域とプロセス群のこと。メモリ領域では、データやSQL処理のキャッシュを残し、プロセス群はデータの読み書きや編集、ログやプロセスの管理を行っている。
データベースは記憶装置にある、テーブルや制御ファイルなどのこと。
oracleではこの2つを明確に分けており、1つのデータベースは1つのインスタンスからアクセスされる。

MOUTとOPEN

SQL文

Discussion