LoginSignup
21
23

More than 1 year has passed since last update.

【3Dエクセル】リレーショナルデータベースを理解し、作業効率を200倍にするビジネステクニック。リレーショナルデータベース -解説編

Last updated at Posted at 2022-04-10

はじめに

普段の業務に「エクセルを使いVLOOKUPで値を抽出して、COUNTIFで数えて、視覚化して…」という作業していませんか!?
その作業、リレーショナルデータベースを使えば一瞬で終わるかもしれません!
今回はデータ分析人材には必須スキルとも言えるリレーショナルデータベース(RDB)の構造を解説したいと思います。

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

リレーショナルデータベース(RDB)とは複数のテーブルを「関係(リレーション)」という概念でつなげ、データの抽出や結合をらくらく行えるデータベース(DB)の事です。エクセルのテーブルがいくつも重なり合っているというイメージを持っていただければイメージしやすいかもです。一般的にデータベースといえばこのRDBを指し、右下の図の様にホットケーキを重ねた様な描画をされます。

DB-1.png

用語集

  • Entity(実体): 実体、DBの全体
  • Attribute(属性): データの属性、列で表される
  • Record(レコード):1行のデータ
  • Table(テーブル):テーブル、AttributeとRecordの集合。原則1テーブル1テーマ。
    -例)部署テーブルには部署以外のデータ(課長の電話番号、部長の入社歴等)は入れない

DB-2.png

「key」という概念

DBはkeyという概念でテーブルとテーブルの間に関係を生み出します。その名の通り、RDBの鍵「key」という概念について説明します。

2種類の「key」

  • Primary Key:テーブルにおいて、1レコード毎に振り分けられるユニークなID
  • Foreign Key:外部のテーブルとの関係をつなげる為のキー

例えば、部署テーブルにおいて、部署IDがPrimary Keyであり、社員テーブルにおける部署IDがForegin Keyとされます。
この場合、部署テーブルの部署IDと社員テーブルの部署IDの関係性は「One to Many」と呼ばれ、鳥の足のような記号で表します。(部署テーブルの部署IDはユニークであり重複しませんが、社員テーブルにおいては重複が発生するためです。)

DB-3.png

「ちょっとちょっと!これじゃあエクセルのVLOOKUPでできちゃうじゃん!」と思っている方、安心してください。RDBは正規化という手法を取り入れる事でデータ作業効率が格段によくなるのです!

Normalization(正規化)

引き続き社員情報DBを使いましょう。例えば、1人の社員が2つ以上の部署に所属しているとき、みなさんはどの様にデータを組みますか?
良いデータベースの定義を意識して、考えていきましょう。

1つのカラムに複数の部署IDを入れる

DB-4.png

これは直感的に「あかんやろ、、」と思う人もいるのではないでしょうか。良いデータベースは1つのセル(マス)に1つのデータしか入れてはいけません。さらに、これをするとふたつのテーブルの関係(リレーション)が壊れてしまいます。

社員テーブルの部署IDカラムを増やす

14.png
一見すると、これで良いかと思われがちなのですが、データベースの世界では空欄のセルは良しとされません。また、とても忙しい社員1人が10部署を兼務するとなると、社員テーブのカラムの数がその分伸びてしまいます。

社員テーブルの行を増やす

15.png
これは、社員テーブルにおいてのIDが重複してしまうので、Primary Keyの原則に反してしまします。

上記の問題を全て解決してくれるのがAssociative Table(連想テーブル)というものです!

Associative Table(連想テーブル)

16.png
Associative Table(連想テーブル)とは、2つのテーブルのPrimary Keyを参照し、重複や欠落が発生している両テーブルの関係を崩す事なく、マッピング(表現)してくれるテーブルです。これはMapping Tableまた、Junction Tableなどとも呼ばれます。このテーブルをテーブルとテーブルの間に置くことで、テーブルの原則、keyの原則、正規化の原則を全て守る事ができます。

おわりに

リレーショナルデータベース(RDB)は様々な原則の本整理されたデータで、データを綺麗に長期間保存する事を可能にします。直には実装編という事で、SQL(Structured Query Language) というRDBを自由自在に操れるプログラミング言語を使い、なぜRDBが作業効率を200倍にしてくれるのかという所を見ていきます。

次回↓

関連記事はこちら

21
23
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
21
23