やめた方がいいテーブル設計 〜重複データのカラム持ち〜
カラムによる重複データの保持(列持ち)
社員ID | 社員氏名 | 子供1 | 子供2 | 子供3 |
000001 | 山田 太郎 | 山田 小太郎 | 山田 小次郎 | 山田 小三郎 |
上記のように子供を複数持つ場合のデータの保持を、複数のカラムを作成することで対応したものは、列持ちと言われます。
そして、この列持ちは、システムを作る上で不適切な場合があります。
列持ちをやめたほうが良い理由
- システムの拡張性が悪い
データを列持ちで定義した場合、重複データの数の増加か難しくなります。
上の例では、子供を3人まで登録できるようにしていますが、もし4人目が生まれた場合、上記テーブルでは、4人目の登録を行うことができません。
もし、4人目を登録する必要が出てきた場合は、テーブルに列を追加する対応となります。
そして、テーブルへの列の追加は、コストの大きな改修となることが多いです。
なぜなら、テーブルを変更した場合、テーブルに合わせて、テーブルへの登録更新箇所および、テーブル参照を行なっている箇所のすべてのSQLおよび、 SQLを使用しているすべての機能の見直しが必要になるためです。
- nullによるデータ保持
データを列持ちで定義した場合、必ず列の数だけデータが作られます。
しかし、登録するデータによっては、あらかじめ用意した列より少ない列で良い場合があります。
もし、あらかじめ用意した列より少ない列で十分な場合、残りの列にはnullが設定されることとなります。
(例)子供を3人まで登録でいるようにしたテーブルに対して、子供1人しかいない場合
社員ID | 社員氏名 | 子供1 | 子供2 | 子供3 |
000001 | 山田 太郎 | 山田 小太郎 | null | null |
そのため、列持ちでデータを定義した場合、不要なnullデータが登録されてしまいます。
結果として、システム側で、取得データごとにnullのチェックが必要となります。
カラムではなく行でデータを保持する
データを行で保持することで、データを列持ちする場合に問題となっていたことがクリアされます。
まず、重複データの数が増えた場合についてですが、行でデータを保持している場合は、IDを追加し、新規で行を登録するだけで対応可能です。
そのため、場合によっては、システムの改修が不要となる場合もあります。
また、通常のシステム改修でも入力チェックを変更するだけで済む場合が多いです。
そして、行でデータを保持することで、必要な数だけ行を登録することが可能となります。
そのため、子供を登録するテーブルの場合、子供が2人であれば2行登録、子供が3人であれば3行登録となるため、nullによるデータの登録が不要となります。
なお、行でデータを定義した場合は、以下のようなテーブル構成になります。
社員番号 | 社員名 |
000001 | 山田 太郎 |
社員番号 | 社員子供番号 | 子供氏名 |
000001 | 1 | 山田 小太郎 |
000001 | 2 | 山田 小次郎 |
000001 | 3 | 山田 小三郎 |
テーブル設計について学びたい方へ
達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2012/03/16
- メディア: 単行本(ソフトカバー)
- 購入: 21人 クリック: 316回
- この商品を含むブログ (24件) を見る
グラス片手にデータベース設計 販売管理システム編 第2版 (DB Magazine Selection)
- 作者: 梅田弘之
- 出版社/メーカー: 翔泳社
- 発売日: 2016/02/09
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
グラス片手にデータベース設計 ~会計システム編 (DB Magazine Selection)
- 作者: 梅田弘之
- 出版社/メーカー: 翔泳社
- 発売日: 2005/07/15
- メディア: 単行本
- 購入: 8人 クリック: 61回
- この商品を含むブログ (18件) を見る
絵で見てわかるシステム構築のためのOracle設計 (DB Selection)
- 作者: 加藤健,前島裕史,岡田憲昌,有滝永,草薙康裕,小田圭二
- 出版社/メーカー: 翔泳社
- 発売日: 2012/02/21
- メディア: 単行本(ソフトカバー)
- 購入: 10人 クリック: 146回
- この商品を含むブログ (2件) を見る
SQLについて学びたい方へ
達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ (CodeZine BOOKS)
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2018/10/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus)
- 作者: 奥野幹也
- 出版社/メーカー: 技術評論社
- 発売日: 2015/03/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (20件) を見る
その他
- 作者: Jr FrederickP.Brooks,Jr.,Frederick P. Brooks,滝沢徹,牧野祐子,富澤昇
- 出版社/メーカー: 丸善出版
- 発売日: 2014/04/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (19件) を見る
ソフトウェア開発はなぜ難しいのか ~「人月の神話」を超えて (技評SE選書)
- 作者: 大槻繁
- 出版社/メーカー: 技術評論社
- 発売日: 2009/10/21
- メディア: 単行本(ソフトカバー)
- 購入: 1人 クリック: 59回
- この商品を含むブログ (12件) を見る
ドラゴンクエスト スマイルスライム ティッシュカバー ミミック
- 出版社/メーカー: スクウェア・エニックス(SQUARE ENIX)
- 発売日: 2016/05/21
- メディア: おもちゃ&ホビー
- この商品を含むブログを見る
ドラゴンクエスト スマイルスライム ぬいぐるみキャップ ブルー
- 出版社/メーカー: スクウェア・エニックス(SQUARE ENIX)
- 発売日: 2015/07/31
- メディア: おもちゃ&ホビー
- この商品を含むブログ (2件) を見る
ドラゴンクエスト スマイルスライム ぬいぐるみキャップ キングスライム
- 出版社/メーカー: スクウェア・エニックス(SQUARE ENIX)
- 発売日: 2017/12/18
- メディア: おもちゃ&ホビー
- この商品を含むブログ (1件) を見る
ドラゴンクエスト スマイルスライム ぬいぐるみキャップ グレー
- 出版社/メーカー: スクウェア・エニックス(SQUARE ENIX)
- 発売日: 2015/07/31
- メディア: おもちゃ&ホビー
- この商品を含むブログ (1件) を見る