データベースにおけるテーブルとは?
システム開発やアプリ開発などのITエンジニアの業務に欠かせないデータベース(DB)は、様々なデータを格納したり管理したりする重要な役割を持っています。データベースに関する用語はたくさんありますが、その中でもよく使われる用語が「テーブル」です。
現在多くの企業データの管理に使われるリレーショナルデータベース(RDB)において、テーブルの知識と正しい理解が必須です。データを不整合なく取り扱うためには、テーブルを適切に設計して管理しなければなりません。
そこで、この記事では、データベースとテーブルの関係、テーブルの基礎的な知識・構造・設計や、テーブルを操作するSQLについて説明していきます。
テーブルとデータベース
テーブルは、データベースで用いられるデータの集合のことです。ここでは、データベースにおけるテーブルがどのような役割を持つのかを説明します。
データベースとRDB
そもそも、データベースとは何でしょうか。データベースとは、集めたデータを利用しやすいように整理した情報の集合のことです。または、そのデータの検索や追加・削除を行う管理システムをまとめてデータベースと呼ぶこともあります。
データベースの仕組みも色々ありますが、その中でも現在多くの企業で業務データ管理に使用されているのが、RDB(リレーショナルデータベース)です。
RDBは、複雑なデータをあらかじめ定義した複数のテーブルを使って管理し、データの重複や不整合を排除して管理を効率化するデータベースです。
テーブルは表形式で表されるデータの単位
データベースは様々な種類のデータを扱います。テーブルは、データベースに格納するデータを種類ごとに規則正しく保存したものです。テーブルは表形式で表され、Excelで言うとシートに当たります。
データベースとテーブルの違いがわかりづらいと感じる場合は、データベースという倉庫に、データを種類ごとに分けて入れたテーブルという箱が、いくつも管理されている様子をイメージするといいでしょう。
例えば、企業の商品販売サイトで利用するデータベースのテーブルであれば、顧客の氏名や住所などを格納する「顧客テーブル」、販売する商品の商品名・価格・商品コードなどを格納する「商品テーブル」、注文を受けた日付や受注番号を格納する「注文テーブル」などが必要になります。
テーブルの構造とは
テーブルは表形式で表され、「カラム(コラム)」「レコード(ロウ)」「フィールド」の要素から成り立っています。ここでは、これらについてそれぞれ説明します。
カラム(コラム、column)
「カラム」は、テーブルの垂直方向の「列」に当たるもので、1つ1つのデータが持つ「属性」を表します。「コラム」とも呼ばれます。例えば顧客テーブルであれば、カラムとして「顧客番号」「顧客名」「住所」「電話番号」などを用意します。
このテーブルに格納されるデータはすべて、このカラムで定義された属性の値を持ちます。顧客テーブルのデータは、それぞれ1つ1つが「顧客番号」「顧客名」「住所」「電話番号」などの値を持つイメージです。
それぞれのカラムには、数値型や文字列型など、格納できるデータ型を指定します。また、空の値を意味する「Null」を格納できないなどの制約をつけることが可能です。
レコード(ロウ、row)
「レコード」とは、データそのものを指す言葉です。テーブルの水平方向の「行」に当たるもので、「ロウ」と呼ばれることもあります。テーブルに新しいデータを追加すると、レコードが増えます。
テーブルの中でレコードを見ていくと、カラムで定義した属性を持つひとまとまりのデータを見ることになります。例えば、顧客テーブルの場合、ある顧客の「顧客番号」「顧客名」「住所」「電話番号」のまとまりが1つのレコード、別の顧客の「顧客番号」「顧客名」「住所」「電話番号」がまた1つのレコードとなります。
フィールド
「フィールド」は、テーブルが持つデータの最小単位で、Excelで例えると「セル」に当たる部分です。フィールドには数値や文字列など、実際の具体的な値が格納されます。
例えば顧客テーブルのフィールドであれば、「顧客名」が「顧客A」であるレコードの「電話番号」カラムが「03-xxxx-xxxx」であるとした場合、この「03-xxxx-xxxx」がフィールドに当たります。
基本的なテーブル設計の考え方
データベースで使用するテーブルは、あらかじめ効率的で重複がないように設計する必要があります。ここでは、基本的なテーブル設計の考え方について説明します。
エンティティとリレーションシップを考える
RDBのテーブルの設計においてまず考えるべきことは、データベースを利用するサービスにおいて管理する概念や情報はどのような「モノ」か、ということです。これを、エンティティと呼びます。
そして、エンティティ同士の関係であるリレーションシップを考慮してテーブルを設計していきます。
複数のテーブルがお互いに関連付けされ、多様なデータを結びつけてデータベースとして活用されます。使いやすいテーブルを作るためには、必要なデータの取り出しが楽にできること、更新をしやすいこと、高速で検索できることなどを意識して、項目や関連付けの設計を行うことが大切です。
テーブル設計をする流れとは
テーブルを設計するには、まず実際の業務において必要な情報の項目を洗い出します。例えば、ECサイトの受注システムであれば、以下のような項目が必要だと考えられます。
1.顧客テーブル 顧客番号・顧客名・住所・電話番号
2.商品テーブル 商品番号・商品名・商品カテゴリ・価格
3.注文テーブル 注文番号・顧客番号・商品番号・数量
洗い出しをするときには、データベースを利用するユーザが業務で使用する帳票や各種リストを参考にするといいでしょう。
また、ユーザに話を聞ける場合は、実際の業務の流れを積極的に教えてもらいましょう。そうすることで業務システム全体が必要とするデータの構成を把握でき、ユーザが行う処理に必要な項目の漏れや、データの不整合のないテーブル設計が行いやすくなります。
ER図やテーブル設計書を作成する
テーブル設計を行うときには、データベース内のエンティティ(モノ)とリレーションシップ(関係)をわかりやすく表す「ER図」(ER = Entity Relationship)を作ります。ER図を作ることで、それを見るだけでシステムが扱うデータの構造や関連性がわかります。
ER図ができたら、テーブル設計書(定義書)を作成します。テーブル設計書ではテーブルの項目名やデータ型、データを一意に識別するためのキー項目などの情報を定義してテーブルの仕様を具体化し、実際のテーブル作成に移っていきます。
ER図やテーブル設計書を作成するときに活用できるツールも多数ありますので、使いやすいものを探して使ってみることをおすすめします。
RDBを操作するSQLとは
RDBにおいてテーブルを作成したり、テーブルのデータを管理したりする操作を行うために、データベースの定義や操作を行うことができるデータベース言語の1つであるSQLを使います。
SQLを使ってテーブルを操作する
SQLは、データベースを管理・操作するDBMS(データベース管理システム)上で、プログラムやシステムからの命令を受けてRDB(リレーショナルデータベース)にクエリ(問い合わせ)を行います。その結果返ってきたデータをプログラムに渡したり、画面に表示したりします。
SQLは、Oracle社のOracle DatabaseやMicrosoft社のAccessやMicrosoft SQL Server、オープンソースのMySQLなど、多くのDBMSで使用することができます。
SQLでできることとは
SQLを使うことで、データベースに対してレコードの検索や登録・更新・削除などの操作を行うことができます。
操作に使われる主な命令文は、次のようなものがあります。
1.SELECT SELECT文を使用すると、データベースからデータを検索して取り出すことができます。検索する列を指定する「SELECT」、検索するテーブルを指定する「FROM」、検索条件を指定する「WHERE」などで構成されます。取り出されたデータは、プログラムに渡されたり画面に表示したりして使われます。
2.INSERT INSERT文は、プログラムやユーザの入力から得られたレコードをデータベースに追加する命令文です。「INSERT」でデータを登録するテーブル名や列名を指定して値を登録します。SELECT文で取得した内容をそのままINSERTするなどの応用もできます。
3.UPDATE UPDATE文で、レコードの更新を行うことができます。更新するテーブル名を指定し、「WHERE」や「IN」を使用して更新対象のデータを絞り込んで指定し、レコードを更新します。
4.DELETE DELETE文を使うことでレコードの削除を行うことができます。「FROM」で指定したテーブルから、「WHERE」で条件を指定してレコードを削除します。
また、SQLでは他にもテーブル自体を作成・削除するなど、データベースを管理する様々な命令が使用できます。
テーブルについての知識を深めてデータベースを活用しよう
様々な企業のシステムで使用されるデータベース(RDB)を使用するためには、テーブルの概念や知識をしっかりと理解しておくことが重要です。この記事で、その基本的な考え方やSQLを使用した操作のイメージがわかっていただけたと思います。
今回の内容を参考にして、データベースに対するスキルや知識をさらに深め、活用してみてください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから