データベースとは SQL

SQL

データベースとは何か|データベースの基本とSQLの入門を理解する

2020年5月28日

こんにちは。

 

産婦人科医で人工知能やデータサイエンスの研究をしているTommy(Twitter:@obgyntommy)です。

 

本記事では、SQLの学習をしたい入門者の方向けに、データベースの基本や概要についての学習をしていきます。

 

データの管理には、主にファイルデータベースを使う方法があります。

 

データをファイルで管理をした場合、1つのファイルで管理するとファイルのサイズが大きくなり、開くだけで時間がかかる場合があります。

 

その結果、データを検索したくても時間がかかる事があります。

 

また、複数のファイルで管理をした場合、それぞれのファイルにまたがってデータを確認する必要がある事があり、非常に大変です。

 

データベースを使うと、データを1つで管理(一元管理)する事が可能ですし、検索も高速にできます。

 

以下の図がファイル管理とデータベース管理の違いを表しています。

データベースとは SQL 入門 ファイル管理を行った時とデータベースで管理を行った時の違いを表した図。データベース管理を行った時にはデータを1つで管理(一元管理)できる事を表している。

実務では、様々なシーンでデータベースが使われており、データを扱う方はデータベースの取り扱いについて避けては通れません。

 

本記事では、データベースの概要について学習していきましょう。

 

ここで本記事の学習到達目標です。

 

 本記事の学習目標

  • データベースの概要の理解
  • データベースを扱うエンジニアの仕事の概要
  • データベースの型の種類の把握
  • DBMSの製品の種類の把握
  • リレーショナル型データベースのキーの理解
  • SQLについての概要の理解

 

では早速、学習していきましょう。

 

データベースとは

データベースとは SQL

データベースとは、データを扱い易いように整理し、管理をするものです。

 

データのやり取りは、データーベースマネージメントシステム(DBMS:database management system)が行います。

 

以下の様なイメージです。

データベースとは SQL 入門 DBMSによって、利用者がデータの管理方法を気にせず、データを取得し、活用することに注力ができる様子を図示している。

利用者はDBMSに「処理要求」を行います。そうすることで、利用者はデータの管理方法を気にせず、データを取得し活用することに注力する事ができます。

 

データベース化のメリット

データベース化すると次のようなメリットがあります。

 

 データベース化するメリット

  1. その①:複数のデータをまとめて管理できる
  2. その②:欲しい形のデータを取得しやすい
  3. その③:データの取得が早い
  4. その④:データの不整合が起きにくい

 

各々について見ていきましょう。

 

その①:複数のデータをまとめて管理できる

ファイルはいろいろな箇所に保存されます。

 

これらのデータからまとめて、欲しい形のデータにすると大変ですね。

 

フォルダやファイル名を決めて保存していても、それぞれのファイルをまとめるのはとても大変です。

 

データベースであれば、1つの場所で管理が可能になります。

データベースとは SQL 入門 ファイル管理を行った時とデータベースで管理を行った時の違いを表した図。データベース管理を行った時にはデータを1つで管理(一元管理)できる事を表している。

欲しいデータを取得しやすい

データベースであれば、大量に保存されているデータから選択、結合、並び替え、計算などをすることで、簡単に欲しいデータが取得できます。

 

ファイルでは自分でデータを取得する必要がありますが、データベースでは、DBMSが行ってくれます。

データベースであれば、大量に保存されているデータから選択、結合、並び替え、計算などをすることで、簡単に欲しいデータが取得できます。 ファイルでは自分でする必要がありますが、データベースでは、DBMSが行ってくれます。

データの不整合が起きにくい

データベースではデータが不整合が出ないように処理します。

 

良く例えに出される銀行口座の例を紹介します。

 

データを利用するときに同時に処理される場合がある訳です。

 

ちょうど以下の様なイメージです。

データベースとは SQL 左の図は、それぞれが残金を取得して更新するまでは、1000円なので1000円を元に計算します。そのため、データ更新するタイミングによって、1200円になったり900円になったりする様子を示している。 右の場合は、データを更新するときは必ず他の人がさわれないようにロックしてから、更新している。更新が完了するまではロックしておいて、その間の処理は待たせるようにしている。そうすることで、データに不整合が起きないようにしている。以上のことを図を用いて示している。

例えば、1000円入っている口座に、2人が同時に「200円振込」「100円引出」をしたとします。

 

左の場合、それぞれが残金を取得して更新するまでは、1000円なので1000円を元に計算します。

 

そのため、データ更新するタイミングによって、1200円になったり900円になったりします。

 

右の場合は、データを更新するときは必ず他の人が扱えないようにロックしてから、更新します。

 

更新が完了するまではロックしておいて、その処理の間は待って貰います。

 

そうすることで、データに不整合が起きないようにできます。

 

データベース化のデメリット

データベース化では以下のようなデメリットがあります。

 

 データ化のデメリット

  • データベース管理の知識が必要
  • SQL文の知識が必要

 

データを管理する人は、データベースについての知識を持った上で、データを使ってもらえる様に「設計」「管理」「運用」をする必要があります。

 

また、データ使う人はSQL文と言う言語を使わないとデータが取得できません。

 

SQL文でなくても、GUI( Graphical User Interface:ソフトウェアの操作画面)でデータを見ることも可能です。

 

しかし、SQL文を知っておいた方が柔軟なデータ取得ができるでしょう。

 

SQL文については、後ほど解説していきます。

 

DBMSの役割

データーベースマネージメントシステム(DBMS)は、ユーザーから処理要求を受けて、それに応じて、色々な処理をユーザーの代わりに行ってくれます。

 

例えば、以下のような処理です。

 

 DBMSの様々な処理

  • データの入力、更新、削除
  • データの並び替え、検索

 

以下の様なイメージで捉えて下さい。

データベースとは SQL 入門 DBMSによって、利用者がデータの管理方法を気にせず、データを取得し、活用することに注力ができる様子を図示している。

ストアドプロシージャー

データベースとは SQL ストアドプロシージャーについての解説図。ストアドプロシージャーはDBMSへの処理をまとめて登録しておける機能。 プログラミングのように条件分岐や繰り返し処理が使えるのも特徴。何回も処理を要求する必要がなくなるので、処理が早くでき、毎回決められた処理を実行してくれる。

 

ストアドプロシージャーはDBMSへの処理をまとめて登録しておける機能です。

 

プログラミングのように条件分岐や繰り返し処理が使えるのも特徴です。

 

何回も処理を要求する必要がなくなるので、処理が早くでき、毎回決められた処理を実行してくれます。

 

データベースエンジニアの仕事の概要

データベースとは SQL

データベースを専門で扱うエンジニアは、データベースを用意して、データを入れる箱を作って"終了"と言うわけにはいきません。

 

他にも、以下のような色々なことが求められます。

 

  • 使いやすいような設計
  • データの更新頻度、容量からハードウェアを決めて運用
  • データのバックアップなど保守、運用
  • データを公開するためのセキュリティ、障害対策

 

これらには、データベースのソフトウェアの知識を専門に必要とされ、高度な知識と経験が必要となります。

 

データベースの型の種類

データベースとは SQL

DBMSにはデータの管理の仕方で、以下のようにいくつか種類があります。

 

そのうち一般的に使われているのは、リレーショナル型データベース(RDB:relational database)です。

 

DBMSの "型の種類" についてまとめてみましょう。

DBMSの型の種類

  • リレーショナル型
  • 階層型
  • ネットワーク型
  • オブジェクト型
  • NoSQL

 

各々について一つ一つ見ていきましょう。

リレーショナル型

ほとんどのデータベースがこのリレーショナル型データベースを採用しています。

 

2次元の行列のデータ構成されています。

 

エクセルなどで馴染みのある表データです。例えば、以下の図を見てみましょう。

 

データベースとは SQL データベースのうちリレーショナル型解説。 2次元の行列のデータ構成されており、エクセルのデータを示している図。

 

表データのことをテーブルと呼び、データベースにはこのテーブルがたくさん入っていて、テーブル同士が連携(リレーション)して動きます。

 

連携というのは、テーブル同士を列の値で繋ぐことです。

 

データを取得するときは列同士を繋いで、欲しいデータを取得します。

 

データ取得するときなどの操作は、SQL文で行います。

データベースとは SQL 入門 リレーショナル型データベースの説明をしている。表データのことをテーブルと呼び、テーブル同士が連携(リレーション)して動いている。 データを取得するときは列同士を繋いで、欲しいデータを取得する様子を示している。

データベースについての説明は大抵、このリレーショナル型データベースのことをを説明しています。

 

本記事でも、このデータベースについて説明していきます。

階層型

ディレクトリ のような階層構造となっているデータベースです。

 

親:子1:多 の関係になります。

 

例えば、店 1 に対して料理AとBがあるといった関係です。

 

この場合、店 1 の料理B、店 2 の料理Bのようにデータの重複が生まれるデメリットがあります。

データベースとは SQL 入門 ディレクトリ のような階層構造となっているデータベースを表している図。店1に対して料理AとBがあるといった関係や、店1の料理B、店2の料理Bのようにデータの重複が生まれている様子も図示されている。

ディレクトリ の階層構造とはWindowsのエクスプローラなどで見る階層構造を意味しています。

 

以下の様なイメージです。

データベースとは SQL ディレクトリ の階層構造はWindowsのエクスプローラなどで見る階層構造であり、ディレクトリを解説している図。

ネットワーク型

階層型では 親:子1:多 でしたが、多:多 の関係もあります。

 

例えば、料理Bは店1だけでなく、店2や飲食店とも繋がる事ができます。

 

こうする事によって、階層型のようなデータ重複がなくなります。

データベースとは SQL 入門 ネットワーク型の階層構造となっているデータベースを表している図。

オブジェクト型

オブジェクト(物)を単位にデータを取り扱うデータベースです。

 

オブジェクト指向プログラミングと構造が同じなので、Java、Pythonなどの言語と連携がしやすいです。

 

以下の様なイメージです。

データベースとは SQL 入門 オブジェクト型のデータベースを表している図。 オブジェクト(物)を単位にデータを取り扱うデータベースである事を飲食店と店を例示しつつ説明している。

 

 

NoSQL

NoSQL(Not only SQL)は比較的新しいデータベースです。SQLを使わないデータベースを指します。

 

NoSQLのメリットには以下のようにいくつかあります。

 

  • 画像や文章など非構造化データを格納
  • 高速にデータを取得
  • 大量のデータを保存

 

Web APIの応答がJSON形式が多いので、そういったデータや、ログデータなどをひたすらデータベースに入れていきたい場合に使います。

 

SQLを使わないデータベースを指すため、下記のように色々な種類があります。

 

  • キーバリュー型
  • ドキュメント型
  • カラム型
  • グラフ型
色々な種類があるのだなー、と思っておけばOKです!
tommy とみー
Tommy

 

DBMS(データベース管理システム)の製品の種類

データベースとは SQL

Oracle database

 

Oracle database のホームページに、商品について以下の記載があります。

 

オラクルの革新的なクラウド・データベースは、自己稼働、自己保護、自己修復が可能で、エラーが発生しやすい手動でのデータ管理を排除するように設計されています。既存のOLTPとデータ・ウェアハウスのクラウドへの移行や新規作成が容易です。クラウド上にあり、安全でインテリジェントな高可用性データベースを使用することで、データからより多くの価値を得て、ビジネスの成長につなげることができます。

»Oracle Japan  / Oracle Database より

 

公式HPは以下を参照にして下さい。

» Oracle Japan / Oracle Database

 

SQL Server

データベースとは SQL 入門 SQL Serverのホームページ画面

 

Microsoftのデータベースアプリケーションが「SQL Server(Microsoft SQL Server)」です。法人ではOracleかSQL Serverかというほど、シェア率が高いです。

 

SQL Server のメリットとしては以下のものが挙げられます。

 

SQL  Server2019 のホームページに、以下の様な商品についての説明があります。

 

Apache Spark 搭載の SQL Server 2019 を使用して、リレーショナル データ、非リレーショナル データ、構造化データ、非構造化データにクエリを実行することで、あらゆるデータからインサイトを抽出し、ビジネスの全体像を把握します。

» SQL Server2019 ホームページより

 

公式ホームページは以下を参照してください。

 

https://www.microsoft.com/ja-jp/sql-server/sql-server-2019
https://www.microsoft.com/ja-jp/sql-server/sql-server-2019

続きを見る

 

MySQL

 

MySQL は世界でもっとも多く使用されているオープンソース・データベースです。

 

MySQL は、大規模な Web サイト、ISV、OEM、VAR のお客様、大企業など様々な環境において、ハイパフォーマンスでスケーラブルなデータベース・アプリケーションの、コスト効率のよい構築のサポートを行っています。

 

公式サイトは以下を参照してください。

 

 

MySQL :: MySQL製品
MySQL :: MySQL製品

続きを見る

 

Postgre SQL

 

Prostgre SQL のホームページに以下の様な商品についての説明があります。

 

PostgreSQLはオープンソースのオブジェクト関係データベース管理システム (ORDBMS) である。名称は Ingres の後継を意味する「Post-Ingres」に由来している。DB-Engines.comによるマーケットシェア調査では、2018年2月現在、Oracle Database、MySQL、Microsoft SQL Server に続いて4位である。

» Wikipediaより

 

公式ホームページは下記を参照にして下さい。

 

PostgreSQL: The world's most advanced open source database
PostgreSQL: The world's most advanced open source database

続きを見る

 

SQLite

 

サーバとしてではなくアプリケーションに組み込んで利用されるデータベースである。 一般的なRDBMSと違い、APIは単純にライブラリを呼び出すだけであり、データの保存に単一のファイルのみを使用することが特徴である。

» Wikipediaより

 

SQLiteの公式ホームページは以下を参照して下さい。

 

SQLite Home Page
SQLite Home Page

続きを見る

 

Microsoft Acccess

 

Microsoft Office Access のホームページに以下の様な商品についての説明があります。

 

Microsoft Office Access(マイクロソフト・オフィス・アクセス)は、マイクロソフトがMicrosoft Windows 向けに販売している、データベース管理システムのソフトウェアである。(略)Accessは、Access/Jet、Microsoft SQL Server、OracleやODBC準拠のデータを取り扱うことができる。データベースに精通した技術者であれば、比較的高度なアプリケーションが開発できるが、そうではない人でも各種のウィザード機能を使用することにより小規模で簡単なアプリケーションの構築が可能であるとしている。

» Wikipediaより

 

公式ホームページは以下を参照して下さい。

 

https://www.microsoft.com/ja-jp/microsoft-365/access
https://www.microsoft.com/ja-jp/microsoft-365/access

続きを見る

 

リレーショナル型データベース(RDB)のキーについて

ここからは、リレーショナル型データベース(RDB)の説明になります。

 

リレーショナル型データベース(RDB)はテーブル同士を連携して動作します。

データベースとは SQL 入門 リレーショナル型データベースの説明をしている。表データのことをテーブルと呼び、テーブル同士が連携(リレーション)して動いている。 データを取得するときは列同士を繋いで、欲しいデータを取得する様子を示している。

主キー(Primary Key)

主キー(Primary Key)とは表データの行やレコードを識別するためのものです。

 

主キーを簡単に説明すると、「データベースにおけるデータの出席番号として使われる項目」の事です。

 

データベースのデータ(行、レコード)を一意に識別するための項目とも言えます

 

主キーは必ず、重複のない一意なものでなければいけません。

 

例えば、店舗IDは「店1」「店2」「店3」とそれぞれ1つずつしかありませんね。

 

なので主キーにできます。逆に店舗名は「AAA」が2つ、「BBB」が1つあり、「AAA」が重複している(一意ではない)ため、主キーとできません。

 

主キーがなければ、店舗リストに同じ店舗名があったときに、どの町の店舗か特定できません。

 

しかし、主キーの店舗IDがあれば、店舗IDによってどの町の店舗か特定できます。

 

データベースとは SQL 入門 主キーの説明を示した図。主キーがなければ、店舗リストに同じ店舗名があったときに、どの町の店舗か特定できないが、主キーの店舗IDがあれば、店舗IDによってどの町の店舗か特定でき流、という事を図示している。

連結キー

二つの列を連結して、キーとします。

 

データベースとは SQL 入門 主キーの説明を示した図。主キーがなければ、店舗リストに同じ店舗名があったときに、どの町の店舗か特定できないが、主キーの店舗IDがあれば、店舗IDによってどの町の店舗か特定でき流、という事を図示している。

上図の店舗リストで、店舗IDがないとした場合、店舗名だけを見てみると、重複したAAAがあるので、住所と連結して、店舗名+住所でキーとすることができます。

 

もちろん、連結したキーが重複していてはいけません。

データベースとは SQL 入門 連結キーを示している図。店舗リストで、店舗IDがないとした場合、店舗名だけでは重複したAAAがあるので、住所と連結して、店舗名+住所でキーとすることができます事を表している図。

ビュー

テーブルは相互に関係を持たせて、複数に分かれています。

 

例えば下記のように、売上テーブルと店舗テーブルのように複数に分かれています。

 

売上と店舗データを合わせて見たいときに、各テーブルが分かれているため、毎回テーブル二つを連結してデータを見る必要があり大変です。

データベースとは SQL 売上テーブルと店舗テーブルに分けて図示している。 売上と店舗データを合わせて見たいときに、各テーブルが分かれているため、毎回テーブル二つを連結してデータを見る必要がある。

元から、2つのデータが合わさった状態でテーブルがあれば良いですが、ビューをつくることで同じことを実現できます。

 

ビューは見たいデータの形にした仮想的なテーブルです。

 

ユーザーはまるで、売上と店舗の結合したテーブルがあるかのように、ビューからデータを取得することで、目的のデータを結合することなく取得できます。

 

ユーザーはまるで、売上と店舗の結合したテーブルがあるかのように、ビューからデータを取得することで、目的のデータを結合することなく取得できます。

 

ビューのデータはテーブルのデータを参照しているので、ビューからデータを取得すれば、テーブルからデータを取得しているのと同じになります。

 

データベースとは SQL テーブルとビューの関係図。ビューは見たいデータの形にした仮想的なテーブル。 ユーザーはまるで、売上と店舗の結合したテーブルがあるかのように、ビューからデータを取得することで、目的のデータを結合することなく取得できる。 ビューのデータはテーブルのデータを参照しているので、ビューからデータを取得すれば、テーブルからデータを取得しているのと同じになる。その様子を表した図。

その為、売り上げビューという見たいデータの形にした仮想的なテーブルを用意します。

 

ビューのデータはテーブルのデータを参照しているので、ビューを見ればテーブルのデータを見ていることになります。

 

SQLとは

データベースとは SQL

SQL(Structured Query Language)はデータベースを操作するための言語です。

 

クエリをDBMSに要求することによって、データーベースを操作することができます。

 

例えば、検索ではSELECT文と言うものを使います。

In[]

 

条件と一致する場所(WHERE)をテーブルから(FROM)、対象のを選択(SELECT)してデータを取得します。

 

このように、和訳できそうなものですが、複数のテーブルから色々な条件でデータを取得するので大抵のSQL文は長くなります。

 

クエリ

ユーザーがデータを操作するときに、命令するためのSQL文を書きます。

 

それをDBMSに処理として要求することをクエリと言います

データベースとは SQL 入門 クエリについて解説した図。ユーザーがデータを操作するときに、命令するためのSQL文を書く。それをDBMSに処理として要求することをクエリと言う。それを示した図。

データ取得

使用者がDBMSに要求した処理要求(クエリ)、すなわちSQL文に応じて、特定のデータを取得します。

 

以下の図の様なイメージです。

データベースとは SQL 入門 使用者がDBMSに要求した処理要求(クエリ)、すなわちSQL文に応じて、特定のデータを取得している様子を示している。

データ操作

使用者がDBMSに要求した処理要求(クエリ)、すなわちSQL文に応じて、追加、削除、更新することができます。

 

例えば、下記のような操作です。

 

  • ある行の削除
  • 行の追加
  • ある行のデータの更新

 

データベースとは SQL 入門 使用者がDBMSに要求した処理要求(クエリ)、すなわちSQL文に応じて、追加、削除、更新することができる様子を示している。

データベースやテーブルの作成

使用者がDBMSに要求した処理要求(クエリ)、すなわちSQL文に応じて、新しいデータベースやテーブルの作成ができます。

 

データベースとは SQL 入門 使用者がDBMSに要求した処理要求(クエリ)、すなわちSQL文に応じて、新しいデータベースやテーブルの作成ができる様子を示している。

今回は以上となります。


-SQL
-,

Copyright© Tommy blog  , 2020 All Rights Reserved.