テーブル設計
要点
- テーブル設計とは、データを保存する表(テーブル)の形を決める作業のことです。
- 「列(カラム)」でデータの項目を、「主キー」で1行を一意に識別し、「外部キー」でテーブル同士を関連づけます。
- 設計が悪いと、データの重複や不整合、検索速度の低下につながります。
テーブルとは何か
テーブルは、データを行と列で整理した表のことです。1つのテーブルには、同じ種類のデータ(例えば「顧客」や「注文」)がまとめて格納されます。
テーブル
データの集まり
表形式
ぽち先生のヒント会社の「顧客台帳」のようなものです。台帳1冊が1つのテーブル、記入するページのフォーマットが列の設計にあたります。
列(カラム)とデータ型
列は、テーブルに保存するデータの項目を表します。それぞれの列には、「どんな種類のデータを入れるか」を示す「データ型」を決めておきます。
id: 整数数値型の列name: 文字列文字列型の列created_at: 日時日時型の列データ型を決めておくことで、数値のはずの列に文字が入ってしまうといった不正なデータの混入を防げます。
ぽち先生のヒントアンケート用紙の記入欄に例えられます。「年齢」の欄には数字だけ、「氏名」の欄には文字だけ、というように欄ごとに書ける内容が決まっているイメージです。
主キー:レコードを一意に識別する
主キーとは、テーブルの中で1行(1レコード)を他と重複なく特定するための列のことです。同じ値を持つ行が2つ以上存在しないことが保証されます。
田中太郎
佐藤花子
必ず重複しない
ぽち先生のヒント学生証の「学籍番号」に似ています。同姓同名の学生がいても、学籍番号さえ見れば誰なのかを確実に特定できます。
外部キー:テーブル同士を関連づける
外部キーとは、あるテーブルの主キーの値を、別のテーブルの列として持たせることで、2つのテーブルを結びつける仕組みです。
主キー: id
外部キー: customer_id
これにより、「この注文は、どの顧客のものか」をデータ上で正しく紐づけられます。顧客の名前や住所を注文テーブルに毎回書き写す必要がなくなります。
ぽち先生のヒント宅配便の伝票に書かれる「会員番号」のようなものです。伝票そのものには住所を全部書かなくても、会員番号から会員データベースを引けば、正しい届け先が分かります。
テーブル同士の関係:1対多
テーブル設計でよく登場するのが「1対多」の関係です。1人の顧客が複数の注文をする、という関係を例に考えてみます。
複数件
この関係は、「多」側のテーブル(注文)に「1」側のテーブル(顧客)の主キーを外部キーとして持たせることで表現します。他にも「多対多」など複雑な関係もありますが、まずは1対多の考え方を押さえておくとよいでしょう。
実務で気をつけたいポイント
まとめ
テーブル設計は、列でデータの項目を決め、主キーで1行を一意に識別し、外部キーでテーブル同士を関連づける作業です。この土台がしっかりしていないと、後から重複や不整合が起きやすくなります。
関連トピック: