sammyppr

View on GitHub

メディア表現 VI 5. データベース

メディア表現 VI TOP に戻る


目次


本日の内容

としていましたが、今日は4回目の内容データベースを行います。


データベースとは

コンピュータ上で集積・整理された情報のことで、


Excel, Google Spreadsheet

表計算ソフトである Excel, Google Spreadsheetでも、一応データベースっぽく利用することはできます。

しかし、複数ユーザからの操作に弱かったり、大容量のデータの取り扱いに不向きだったりします。

業務として利用するには、データベース専用のアプリの利用が求められます。


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

と言います。複数のテーブルに関連性を持たせたデータベースをリレーショナルデータベースと呼びます。

例えば、個人情報のテーブル

個人ID 氏名 E-mail
00001 Aさん a@test.com
00002 Bさん b@test.com
00003 Cさん c@test.com

と、出席確認テーブル

出席ID 出席日 個人ID
000001 2022/10/14 00001
000002 2022/10/14 00003
000003 2022/10/15 00002
000004 2022/10/15 00003

の二つのテーブルがあった時に、個人IDで二つのテーブルが関連づけられていることが分かります。

テーブルはレコードに対して一意(ユニークな・重複しない)のIDを振っておくことが多いです。


正規化

リレーショナルデータベースには設計が必要となります。コンピュータが扱いやすいテーブルの構造を作る必要があります。

例えば、次のような表があったとしましょう。

注文日 ユーザ名 発送先住所 商品名1 単価1 数量1 商品名2 単価2 数量2 商品名3 単価3 数量3 合計金額
2022/10/14 A 住所A 商品A 100 1 商品B 80 2 商品C 50 6 560
2022/10/14 B 住所B 商品B 80 5             400
2022/10/15 C 住所C 商品B 80 1 商品C 50 5       330
2022/10/16 B 住所B 商品C 50 5             250

これは無駄が多いような気がしませんか?また、注文の中に商品欄が3つありますが、商品4個以上では対応できません。

第1正規化

まず、これを整理しましょう。商品の注文ごとにレコードを記録させます。

注文日 ユーザ名 発送先住所 商品名1 単価1 数量1 合計金額
2022/10/14 A 住所A 商品A 100 1 560
2022/10/14 A 住所A 商品B 80 2 560
2022/10/14 A 住所A 商品C 50 6 560
2022/10/14 B 住所B 商品B 80 5 400
2022/10/15 C 住所C 商品B 80 1 330
2022/10/15 C 住所C 商品C 50 5 330
2022/10/16 B 住所B 商品C 50 5 250

これを第1正規化と呼びます。

第2正規化

住所・単価等が重複して表に現れていますね。これも整理しましょう。 ユーザ名・商品名・注文ごとにIDを振って整理してみましょう。

購入履歴

注文ID 注文日 ユーザID 合計金額
OID00001 2022/10/14 UID00001 560
OID00002 2022/10/15 UID00002 400
OID00003 2022/10/15 UID00003 330
OID00004 2022/10/16 UID00002 250

ユーザデータ

ユーザID ユーザ名 発送先住所
UID00001 A 住所A
UID00002 B 住所B
UID00003 C 住所C

商品データ

商品ID 商品名 単価
GID00001 商品A 100
GID00002 商品B 80
GID00003 商品C 50

購入履歴明細

注文ID 商品ID 数量
OID00001 GID00001 1
OID00001 GID00002 2
OID00001 GID00003 6
OID00002 GID00002 5
OID00003 GID00002 1
OID00003 GID00003 5
OID00004 GID00003 5

第3正規化

この例では、ここまでで分離できるところを全てしました。

例えば、住所のところを「東京都」「神奈川県」「千葉県」などの都道府県ごとに管理すると、さらに分離することができます。

正規化まとめ

定義としては第5正規化まであるようですが、通常実務で必要とされているのは第3正規化までとなります。

参考:リレーショナルデータベース正規形の種類と正規化手順

正規化のメリット・デメリット

メリット

デメリット


SQL文

データベースにデータを蓄えるための準備としての設計について学んできましたが、 そのデータベースに対してCRUD

することが基本的には必要となります。そのためのデータベース言語があり、その中で最も普及しているものがSQLです。

SQLはISO(国際標準化機構)で規格が標準化されており、一度学習すればほかのデータベースでもほぼ同じように操作可能です。

ここではCRUDという概念と、SQLという言語があるということを理解しておきましょう。


カメラ貸し出しDBについて考えてみよう。

正規化はまだ考えてなくて良いけど、どのような項目が必要になるか考えてみよう。 ちなみに、現状のファイルはTeamsのExcelファイルでカメラの機種ごとに次のように管理しています。

これ、ジンバルみんな借りたいって言ったときに、ぶつかっちゃいますね。どんな感じにしましょう…

 

こんな感じでどうかな?

申請日 開始日 終了日 学籍番号 氏名 用途 機種名 備考
2022/10/14 2022/10/14 2022/10/18 ABC12345 へのへのもへじ ロケ XT-4 ジンバル・三脚
               
               

これを正規化していこう。

の3つに分けられそうです。


AirTable

データベースソフトにはWordpressのときに使ったMySQLなどがありますが、最近ではWeb上のサービスがあるので、それを使っていきましょう。

Airtableは、2012年にリリースされたクラウド型のデータベース管理に特化したノーコードツールです。

https://www.airtable.com/home/built-for-you

とりあえず使えるようになるまで

  1. Sign up しましょう。メアドでもGoogleアカウントでも構いません。
  2. 「What team are you on?」はOther/PersonalでOK
  3. 「Who do you collaborate with?」はSkip
  4. 「Get up and running fast!」はContinue
  5. 「I’m currently working on:」はTestとか
  6. 「Now, we’ll add some info.」はとりあえず、ProjectsをクリックしてContinue
  7. 「For each row in Projects, I’d also like to track:」はとりあえずStatusでContinue
  8. 「+Create Your Own Workflow Later」
  9. Grid only(for now)

ふう、やっと使える…初めてのデータベースですが、まずはこれから管理表を作成していきましょう。

管理表

一度3つ入ってるデータを削除しましょう。

としましょう。ProjectsからRenametableで管理表にしておきましょう。

機材表

Projectsの右の下三角からAddTable, Create Empty Tableとしましょう。機材表とします。

データとして

を追加しておきましょう。

二つの表を結びつけよう

管理表に戻って、

それではデータを追加してみましょう。

ユーザ表作りましょう。

フォームを作ってみよう

好きにいじってみよう

フィールドタイプに気になる(Barcode)があります。iOS,Androidと書いてあります。何ができるか試してみてください。

データベースまとめ

世の中の情報システムには必ずと言ってよいほどデータベースが裏で動いています。 プログラミングは一切行いませんでしたが、データベース、およびリレーションについて理解できたでしょうか?

提出について

メモをマークダウンで記述してPDFにしたものを提出とします。