- ベストアンサー
テーブルの作り方について
はじめまして。 SQLは初心者なんですが、テーブル構成の仕方について質問です。 ある場面で使用するのは、A,B,C,D,Eというデータで、 別のある場面で使用するのは、A,B,F,G,Hという場合にはテーブル(A,B,C,D,E,F,G,H)を作って1つのテーブルにするのはいいのでしょうか?悪いのでしょうか? メンテナンスや、大量のデータ取得などをするのにこの構成が適しているのかどうかがわかりません。 別々に作るのと、まとめて作ることそれぞれの メリット、デメリットがあったら教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
この内容からだけでは、良いとも悪いとも言えません。というのは、項目A~Hの関係が分からないからです。 例えば、[氏名コード]、[名前]、[生年月日]、[性別]など、関連性があれば同じテーブルに含めて問題ありません。 ただ、[氏名コード],[名前],[生年月日],[性別],[所属部署コード],[所属部署名]などを同じテーブルにまとめるのは良い設計ではありません。 この場合、[氏名コード]をキーとするテーブル(氏名コード、名前、生年月日、性別、所属部署コード)、[所属部署コード]をキーとするテーブル(所属部署コード、所属部署名)の2テーブルを作成し、[所属部署コード]で2つのテーブルを関連づけます。 テーブルの設計では、正規化(項目の整理)がよく行われます。第1~第5正規化、ボイスコッド正規化など多数の正規化が存在しますが、実際のシステムでは第3正規形か、第2正規形がよく利用されます。(第3正規形あたりが理想的ですが、パフォーマンスを重視しないといけないシステムでは、やむを得ず第2正規形を使用したり) 正規化するメリットは、データの整合性が保ちやすい。(Aさんの名前が変わったとき、たくさんのテーブルにAさんの名前が入っていた場合、全ての名前を変更する必要がある) 正規化しないメリットは、パフォーマンスが良い。データを簡単に取得できる…などがあります。
その他の回答 (2)
- Senna_FF
- ベストアンサー率45% (153/334)
それぞれのデータ項目の性質にもよるので、一概には回答できないのですが、 Webで「データベース 正規化」等で検索すると、さまざまなレクチャーがされています。 その中には、データサンプル等も示されてますので、そちらを参考にされるとよいと思います。 メリット、デメリットについても書かれていますよ。 (データの物理的なこと、整合性・パフォーマンスなど) http://www.google.co.jp/search?q=%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%80%80%E6%AD%A3%E8%A6%8F%E5%8C%96&hl=ja&lr=&rls=GGLD,GGLD:2005-44,GGLD:ja&start=0&sa=N
- 0KG00
- ベストアンサー率36% (334/913)
通常は一緒に作っておいて、ビューで分けるかSQLで分ける場合が多いですね。メリット/デメリットは表裏一体です。 同じテーブルにしておいた場合ですが [メリット] データの同期を取る必要がなく、データの整合性に問題が無い [デメリット] データの更新などでロックが掛かった場合、ロックの方法によっては他方も参照ができなくなる事がある(性能面でも有利?)