RON_wanwan
2021年02月02日更新 722 Views

基本情報の勉強をしてみた ①データベース

文系出身の私が、営業職として飛び込んだIT業界。現在育休中なので隙間時間にて改めてITのお勉強。。。難しいなと思ったポイントを備忘録として整理しておきます。

データベースとは

データベースとは、大量のデータを統合し組織的に管理・蓄積管理したものであり、目的のデータを効率よく検索できる仕組みとなっている。ファイルでの取り扱いと比べて、得られるメリットとしては下記が挙げられる。
・データの一貫性が保てる(完全性)
・データの独立性が高い(独立性)
・データを同時に利用できる(安全性)

リレーショナルデータベースとは

現在主流となっているのは関係データベース(リレーショナル型)である。データを表形式で管理する。この表は、列(属性)ならびに行(組)からなる。有名な製品で言うと、Oracle, MySQL, SQLServer, PostageSQL などが挙げられる。

リレーショナルデータベースは、DBMS(データベース管理システム)に依存する。代表的な機能は下記。
・データベース定義機能
DDL(データ定義言語)にて、データベースの作成を行う
・データベース操作機能
DML(データ操作言語)にて、データに指示を出し、データベースの操作を行う
・データベース管理機能
データベースは同時に複数ユーザーからのアクセスが生じうるもの。保全(排他制御、障害回復など)、秘密保護(アクセス制御、暗号化)を行う。

データベースの正規化

関係モデルでデータベースを構築する際に必要となる作業であり、データの冗長性をなくし一貫性と整合性を保つ。一般的に第三正規化まで行う。

・正規化の手順を理解するための用語
非正規化:生データ。整理されておらず重複部分を持った状態。
候補キー:テーブルの中で1つのレコードを特定できるカラム、またはカラムの組み合わせ。
主キー:上記候補キーの中から開発者が一つを選んだもの。ただし、空値は使えない。(NOT NULL)
関数従属性:ある項目の値が決まれば、それに対応して他の項目の値も決まる性質のこと。
(例)社員番号→社員名
推移関数従属性:第二正規化を行った表において、キー項目以外の項目に関数従属していること。

正規化の流れ

非正規形
ただ並んでいる状態

受注番号受注日得意先コード ・・・商品コード商品名販売価格受注数量受注金額
商品コード商品名販売価格受注数量受注金額
商品コード商品名販売価格受注数量受注金額
商品コード商品名販売価格受注数量受注金額

①第1正規化
テーブルで表現できるようにする。繰り返し部分を1つのレコードとすべく、行を特定できるキーとなる項目(候補キー)が必要になる。計算によって求めることができるものは除外する。

受注番号・・・商品コード商品名販売価格受注数量

②第2正規化
テーブルのすべての候補キーにおいて部分関数従属性を排除し、別の表にする。

受注番号受注日得意先コード得意先名得意先住所
受注番号商品コード受注数量
商品コード商品名販売単価

※赤字=主キー
※青字=外部キー

③第3正規化
キー項目以外でも他の値を特定できる、非キー属性の関数従属を排除し、別の表にする。

受注番号受注日得意先コード得意先名得意先住所
得意先コード得意先名得意先住所
受注番号商品コード受注数量
商品コード商品名販売単価

リレーショナルデータベース言語 - SQL

SQLは(Structured Query Language) は関係データベースを操作するための一般的な言語である。データ定義を行うDDL(Data Definition Language)、データ操作を行うDML(Data Manipulation Language)、データ制御を行うDCL(Data Control Language)から成る。

全ては難しいが、一旦以下コマンドは覚えておく。

DDLDMLDCL
CREATE 作成INSERT 挿入GRANT 権限付与
ALTER 変更UPDATE 更新REVOKE 権限剥奪
DROP 消去DELETE 消去
SELECT 選択

DMLによる操作

・INSERT 挿入
① INSERT INTO 表名 VALUES 列のデータ, ・・・
② INSERT INTO 表名 SELECT ・・・
(例文)
商品表にB200の商品データを追加する
INSERT INTO 商品表 VALUES ('B200','商品B',160)

品番商品名単価
A100商品A80
B200商品B160

・UPDATE 更新
UPDEATE 表名 SET 列名 = 式 WHERE 条件
(例文)
商品表の全ての単価を2割引にする
UPDATE 商品表 SET 単価 = 単価* 80/100

品番商品名単価
A100商品A64
B200商品B128

・DELETE 消去
DELETE FROM 表名 WHERE 条件
(例文)
商品表の品番B200の行を消去する
DELETE FROM 商品表 WHERE 品番 = 'D400'

品番商品名単価
A100商品A64
B200 商品B128

・SELECT 選択
(例文)
売上表から、数量が10以上30未満の行を取り出す
SELECT * FROM 売上表 WHERE 数量 >= 10 AND 数量 < 30

| 品番 |顧客番号 |数量 |
| --- | --- | --- |
| A100 |200 |10 |
| B200 |100 |30 |
A100のみが取り出される

例題を見てみる

社員表に対して、下記のSQL文を実行する。結果として得られるデータは?
SELECT 社員番号 FROM 社員表 WHERE 座席番号 > 300 AND 給与 <= 320000 ;

・社員表

社員番号社員名給与座席番号
100A210000302
110B330000301
111C270000202
112D320000301
122E350000101

解答 
社員A と 社員D
WHERE以下の条件により、座席番号は300より大きいもの、かつ、給与32万以下のデータが選択される

関連記事

VPN、アプリケーションGW、RASなどネットワークセキュリティを図解。WAF、無線LANの暗号化なども含め、社内セキュリティの全体像を把握することを目指します。
2021年03月27日
プロキシサーバとリバースプロキシサーバの流れを図解。各々の機能・役割を含め把握することを目指します。
2021年04月03日
要求定義から始まり、設計、テストまでの大まかな流れを図解。外部設計と内部設計の違いを含め、各工程の作業内容を理解することを目指します。
2021年04月11日
代表的な図式手法となるUML、DFD、E-R図、決定表、状態遷移図を図解。各々の記載方法を含め理解することを目指します。
2021年07月11日
オブジェクト、属性、メソッド、カプセル化、クラスにインスタンス、独特な単語の意味を図解を含め整理。クラス図の書き方も含め、オブジェクト指向設計の基本を理解することを目指します。
2021年06月10日
ホームへ戻る