DBに定義するテーブルについて記載します。
テーブルとは
テーブルとはデータベース上でデータを種類ごとに分類し整理する箱のようなものだと考えます。テーブルを定義する場合に最低限必要な要素は以下の通りです。
- テーブル名:データベース上でテーブルを識別する名称です。
- 項目(カラム):テーブル内にデータを種類ごとに分ける枠の名称です。
- データ型:カラムに登録するデータのプログラムから見たデータ種類です。
- 主キー:各データを一意に識別可能な値になります。(※)
※主キーは「索引:インデックス」の仲間になります。インデックスの持つ意味についてはここでは割愛いたします。
データ型について
カラムに設定するデータ型によってデータの種類が決まってきます。主なデータ型については以下の通りです。
No. | 種類 | データ型 | 主な用途 |
1 | 数値 | NUMERIC | 金額、年齢など |
2 | 文字、 文字列 |
CHAR、 VARCHAR など |
名前、住所、メールアドレスなど |
3 | 日付、 時刻 |
DATE、DATETIME、TIMESTAMP など |
データ登録日時、誕生日など |
4 | 論理値 | BOOLEAN、 BIT、 など |
フラグ管理など。 |
5 | バイナリ | BLOB など |
PDFファイル画像データなどを登録する |
また、データ型にはサイズ(文字数、数値の桁数)を明示的に定義する必要があるものもあります。上記表にあるデータ型だと「NUMERIC」、「CHAR」、「VARCHAR」などが該当します。
※細かい型の説明については利用するDBの仕様に依存するためここでは割愛します。
主キーについて
主キーとは、データを一意に識別可能な情報です。主キーを定義する場合一つの項目から定義する場合と複数の項目から定義する場合とあります。
例えば以下のような社員情報のテーブル定義を作成します。
No. | 社員番号 | 名前 |
1 | SN0001 | 葉月しずく |
2 | SN0002 | 遠山りん |
3 | SN0003 | 八神コウ |
4 | SN0004 | 滝本ひふみ |
テーブル定義をする場合は以下のように考えることができます。
No. | 項目 | データ型(サイズ) | 主キー |
1 | 社員番号 | CHAR(6) | 〇 |
2 | 名前 | VARCHAR(20) |
「社員番号」は各社員ごとでユニークになると判断できるため主キーとして定義しました。データの特色から「社員番号」を固定長、「名前」を可変長として定義しました。
テーブルの作り方
テーブルの構成に最低限必要な要素を一つずつ定義します。
No. | 艦名 | 艦種 | 進水日 |
1 | 大和 | 戦艦 | 1940年8月8日 |
2 | 赤城 | 空母 | 1925年4月22日 |
3 | 五月雨 | 駆逐艦 | 1935年7月6日 |
4 | 朝霜 | 駆逐艦 | 1943年7月18日 |
上記の軍艦の情報をテーブル定義していきます。
※テーブルの正規化については別途記載するため今回は割愛します。
テーブル名の定義
まずはテーブル名を定義します。テーブル名は情報が分かるものをアルファベットで表現します。
テーブル名:「WARSHIP」
※データベースにより日本語をそのまま使えることもありますが今回はアルファベットにしました。
カラム構成の定義
カラム構成を下記のように考えていきます。
◆主キー
まず、主キーとなる項目を考えます。「No.」という項目がありますが実際には表を見やすくするための項目になります。この情報にはユニークになる項目がないため連番を識別番号の項目として追加します。
主キー項目:「ID」
◆カラム名
カラム名もアルファベット化していきます。
艦名:「NAME」
艦種:「TYPE」
進水日:「LAUNCH_DATE」
◆データ型
カラムごとにデータ型を定義します。データ型は情報の特性を考えて定義します。
ID:「NUMERIC(5)」
※増やしていった場合1万件では不安と考えました。
艦名:「VARCHAR(100)」
※海外艦でも100文字は超えないかなと考えました。
艦種:「VARCHAR(50)」
※海外艦種名でも50文字は超えないかなと考えました。
進水日:「DATE」
※年月日で表現できると考えました。
テーブル作成
テーブル構成は以下の通りで定義しました。
※正規化についてはここでは考慮しておりません。
テーブル名:WARSHIP
No. | カラム名 | データ型 | 主キー |
1 | ID | NUMERIC(5) | 〇 |
2 | NAME | VARCHAR(100) | |
3 | TYPE | VARCHAR(50) | |
4 | LAUNCH_DATE | DATE |
テーブルを作成は以下のSQLで行います。
CREATE TABLE WARSHIP (
ID NUMERIC(5) PRIMARY KEY,
NAME VARCHAR(100),
TYPE VARCHAR(50),
LAUNCH_DATE DATE)
これでテーブルは作成されます。