データベースのテーブルとは?設計や作成方法を解説

 2021.08.04  株式会社システムインテグレータ

さまざまなデータを格納するデータベース。最も普及しているリレーショナル型データベースは、データを表形式の「テーブル」に格納して管理します。データを不整合なく格納するためには、テーブルを適切に設計し、管理していかなければなりません。

では、このテーブルはどのように管理していけばよいのでしょうか。本記事では、データベースの「テーブル」について解説します。

テーブルとは

テーブルは、データベース内でデータを格納する領域で、表形式で表します。テーブルはExcelでいうと「シート」に該当し、データベースがExcelでいう「ブック」にあたります。

1つのデータベースの中に、商品情報を登録する「商品テーブル」、顧客情報を登録する「顧客テーブル」のように、複数のテーブルを持ちます。実際には、以下のようなイメージでデータを管理します。

table1

table2

テーブルの設計方法

ビジネスで扱われるたくさんのデータをテーブルに正しく格納するためには、モノ(エンティティ)と関係(リレーションシップ)を考慮する必要があります。このエンティティとリレーションシップの関係を表したデータベース設計技法を「ER設計」といいます。

ER設計では、ER図にエンティティとリレーションシップを記載し、概念モデルから論理モデル、そして実際にデータを登録する物理モデルへと深堀し、テーブルを設計していきます。以下は、簡単な概念モデルのイメージです。

image4

テーブル数が多くなるとシステム全体のデータ構成を把握するのが困難になり、設計ミスが発生するリスクとなります。ER図を記載することで、システム全体で取り扱うデータの構成を把握することができ、手戻りの防止やデータ不整合の防止に役立ちます。

テーブルのカラムとレコードとは

image5

ここでは、テーブルを構成するレコード、カラム、フィールドについて細かく見ていきます。

レコード

レコードは、テーブルの中の行に該当し、データそのものを意味します。たとえば4件のデータを登録したとすると、データ1件=1レコードです。

カラム

カラムは、テーブルの列に該当し、属性を意味します。列ごとにデータ型が決められ、データ型にあったデータでないと、格納することができません。また、カラムごとに値を検索するための索引や、「Null値(空)は入力できない」といった制約をつけることができます。

フィールド

 

フィールドは、レコードの中の項目であり、データの最小単位です。Excelでいうと「セル」に該当します。実際に値が格納される部分です。

テーブルの作成

ここからは、実際にテーブルを作る方法を解説していきます。

データベースを操作するには、SQLと呼ばれるプログラミング言語を用います。今回は、Oracle Databaseを例に、実際のSQLをご紹介していきます。テーブルを作成するには、以下のSQLを実行します。


CREATE TABLE テーブル名 ( カラム1 データ型(サイズ) 制約 ,カラム2(サイズ) データ型 制約 )

テーブルを作成する「CREATE TABLE」文では、カラムごとにカラム名およびデータ型を定義します。また、カラムに対する制約もあわせて付ける場合は、含めて記載します。

今回は例として、以下のテーブルを作成します。
table3

実際にテーブルを作成するSQLは以下のようになります。
CREATE TABLE 商品マスタ (
商品番号 CHAR(3)
,商品名  VARCHAR2(20)
,価格   NUMBER(5,0)
)

テーブル作成後の操作

続いては、作成したテーブルに対してデータを登録・更新・削除する方法をご紹介します。テーブルの作成と同じく、SQLを使ってテーブル内のデータを操作します。
5.1 レコードの追加
では、先ほど作成したテーブルにレコードを追加してみましょう。レコードを追加するには「INSERT」文を用います。

INSERT INTO テーブル名 (カラム名1, カラム名2,...) VALUES (値1, 値2,...)

登録する値がテーブルのデータ型と一致しない場合はエラーが出るため、注意しましょう。たとえば、NUMBER型(数値型)に対して文字型の値を登録しようとするとエラーになります。テーブル定義を理解しておくことが重要です。

先ほど作成した商品マスタに、商品名「お米」のデータを登録します。
今回は例として、以下のテーブルを作成します。
INSERT INTO 商品マスタ(’商品番号’, ’商品名, ’価格’) VALUES (‘001’,‘お米’,3000)

これにより、商品マスタにデータが登録されます。
table4


INSERT文は、1レコードずつ値をいれて追加していくことも、他のテーブルから参照した結果をまとめて追加することもできます。

レコードの更新

すでに登録したレコードに対して、一部のフィールドの値を更新したい、という場合は、「UPDATE」文を用います。

UPDATE テーブル名 SET カラム名1 = 値1 WHERE 条件

大量データから特定のデータのみ値を更新した場合は、WHERE句の後に条件を記載します。この条件に該当するデータ全てが、指定した値に更新されます。WHERE句をつけなかった場合は、該当テーブルの全てのデータで指定した列に対して値が更新されます。

例として、先ほど登録したデータで価格の値を間違えており、値を更新したい場合は、以下のSQLを実行します。

UPDATE 商品マスタ SET 価格 = 3500 WHERE 商品番号=’001’

これにより、データは以下の通りに変更されます。
table5

レコードの削除

不要なデータを削除したい、という場合は、「DELETE」文を用います。

DELETE FROM テーブル名 WHERE 条件

テーブルから特定のレコードを削除するには、WHERE句に条件を記載します。この条件に該当するレコード全てが削除されます。WHERE句をつけなかった場合は、テーブルに格納されているデータすべてが削除されます。

今回の例では、先ほど登録したデータを削除するSQLをご紹介します。

DELETE FROM 商品マスタ WHERE 商品番号=’001’

「INSERT」「UPDATE」「DELETE」文で、それぞれデータの追加、更新、削除が実行できます。ただし、これらの文を実行しても、あくまでメモリ内で処理をしただけで、まだテーブルには反映されません。「COMMIT」文を実行することで、初めて実行した結果がデータベースに反映されます。

COMMIT

もしSQLを実行した後に、UPDATEやDELETEの実行を取り消したい場合は「ROLLBACK」文を実行します。これにより、SQLの実行を取り消すことができます。ただし、COMMITを実行した後は取り消すことができませんので、ご注意ください。

ROLLBACK

レコードの閲覧

単純にデータを更新するのではなく、テーブルに格納されているデータを参照したい場合はSELECT文を用います。

SELECT カラム1, カラム2, カラム3, ... FROM テーブル WHERE 条件

今回は、先ほどデータをINSERT文で登録した直後、正しく登録できたか確認するためのSELECT文をご紹介します。

SELECT ’商品番号’, ‘商品名’, ‘価格’ FROM 商品マスタ WHERE 商品番号=’001’

上の例では全てのカラムを指定していますが、特定のカラムのみ表示することもできます。また、WHERE句で条件を指定しない場合は、該当テーブルに格納されているすべてのデータが表示されます。

テーブルの削除

作成したデータを削除したい場合は、DROP TABLE文を用います。

DROP TABLE テーブル名

CREATE TABLE文、DROP TABLE文は、データではなくテーブルそのものを作成または削除します。この場合は、COMMIT文やROLLBACK文を実行しなくとも、結果は即時反映されます。特にDROP TABLE文は、一度削除されてしまうと再作成もしくはバックアップデータから戻すしか復旧できなくなるため、十分注意しましょう。

まとめ

本記事では、データベースでデータを格納する「テーブル」の構造や設計方法、さらにテーブルに対してデータを格納するための操作方法をご紹介しました。実際にテーブルに格納されたデータを操作する方法をご理解いただけたと思います。

今回は至ってシンプルな例でしたが、SQLをつかえば複数のテーブルを扱い複雑な条件に合致するデータを抽出することも行えます。

テーブルを理解することは、データベースのデータを扱うための最初の一歩です。今回の内容を参考に、データベースの環境がある方は、実際にやってみることをおすすめします。

 
CTA

RELATED POST関連記事


RECENT POST「データベース入門」の最新記事


データベース入門

データベースとは?メリットや種類などの基本を解説

データベース入門

インデックスとは?仕組みをわかりやすく解説

データベース入門

SQL_Loaderとは?基本的な使い方からオプションまで解説

データベース入門

ストアドプロシージャとは?利点や書き方を解説

データベースのテーブルとは?設計や作成方法を解説