• ベストアンサー

以下の項目のテーブルを作成したいんですが。

PHP+MySQLで 普通科A ---------------------- 普通学生番号 名前 住所 電話番号 得意科目1 得意科目2 平均点 進学希望1 進学希望2 普通科B ------------------------ 普通学生番号 名前 住所 電話番号 得意科目1 得意科目2 平均点 就職先1 就職先2 補習科 ---------------------------- 補修学生番号 名前 住所 電話番号 国語点数 数学点数 英語点数 物理点数 というような項目を追加、更新、削除、検索というwebアプリを作成したいんですが、テーブル構成はどのようにするのが一般的なんですか? これは例なのでフィールド数は少ないですが、共通する部分がたくさんある場合、 table_1 普通科ABに共通するフィールド table_2 普通科Aの残り table_3 普通科Bの残り table_4 補習科のフィールド という風に分けたほうがいいんでしょうか? 普通科A、普通科Bの登録フォームから INSERTする時など 「普通学生番号」の管理が大変そうなんですが。 技術が無い場合、普通科A、普通科B、補習科と 3つのテーブルにして全部入れて処理したほうがいいんですかね。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

そのアプリの仕様によります。 とくにテーブルを分ける必要がないのであれば分ける必要はありませんよ。 普通科A、B、補習科でそれぞれ独立した操作をしたいだけであればそれぞれを一つずつのテーブルで良いと思います。 普通科A,Bの共通項目を抜き出してテーブルを作るというのは、仮に両方のテーブルに属する学生がいてその情報を更新することが頻繁にある場合は便利ですが、そうでなければ無理に分ける必要はありません。 テーブルを分ける意味は、データの1元化です。複数のテーブルに同じデータが点在する場合はその箇所を分離する価値はありますが、それ以外であればやらない方が実行速度も速いし、ディスク容量も節約できますし、開発も楽です。

その他の回答 (2)

  • dell_OK
  • ベストアンサー率13% (766/5722)
回答No.3

No.2のご回答にあるように、アプリの仕様によると思います。 追加、更新、削除、検索だけであるのなら、 No.1のご回答にあるように、1つのテーブルで十分だと思います。 共通非共通全項目を羅列し、科の属性を持たせる事で、 後はPHPの仕事になると思います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

学生番号が2種類あるところからして運用がわかりにくいですが・・・ 個人的には 学生番号、氏名などは一つのテーブルで処理した方がなにかとラクダとおもいます 属性として、普通科A、B、補修科という情報を載せればすむので。 科ごとの特有の情報は正規化してあとからJOINすればすみます

関連するQ&A