• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:必要なテーブルの個数について。)

必要なテーブルの個数について

このQ&Aのポイント
  • PHPを使用して、フォームに入力された内容をデータベースに書き込む際、施設名、都道府県、住所、電話番号、メールアドレスなどの情報を一つのテーブルに全て書き込むべきか悩んでいます。
  • 運用やセキュリティの観点から見ると、テーブルの個数を増やす方が良いのかどうか迷っています。
  • 他のデータは重複することは無いので、都道府県のみが重複する可能性がある場合、テーブルを分けるべきかどうか検討しています。

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

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

PHPの質問というよりはSQLのものですね。基本は「正規化」です。 検索性の問題です。 都道府県で集計したいとか、たとえば東京に施設はいくつあるかとか・・・ を考えると都道府県は普通IDを振っておいて別テーブルに入れます。 まぁIDではなく実際の都道府県名を入れておいても同じですが、 集計単位のことを考えると別テーブルが必要になる場合が多いでしょう。 住所はたいていどの施設も1か所につき1つでしょうから、同じテーブルで問題ないと思いますが、電話番号やメールアドレスは 一つとは限りません。 管理方法を調整しつつ別テーブルにした方がいいかもしれません。 どんな方法をとっても「セキュリティ」は対して変わらないと思います。 どちらかというと検索のしやすさとスピードの問題ですね。 (必ずしも検索がしやすいからといってスピードが速いとはかぎらない、逆も然り)

narusuji
質問者

補足

ご回答ありがとうございます! とりあえず1施設に1つの電話番号、1つのメールアドレスという事を前提にしています。 アドバイスのとおり、都道府県を別テーブルにしたいと思います。 オラクルブロンズ程度のSQL文しか分からないので、主キー、外部キーなど設定に多少手間取ると思いますが、初めての複数テーブルに挑戦してみます。 ちなみにメールアドレスはabcde@yahoo.co.jpのような形式で、書き込んで良いのでしょうか? それともローカル部@ドメイン部のように、2つに分けたほうがセキュリティは高まるんでしょうか? (同じテーブルに2つのデータがあれば関係無いような気がしますが、どうなんでしょうか。)

その他の回答 (1)

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

>ローカル部@ドメイン部のように、2つに分けたほうがセキュリティは高まるんでしょうか? 繰り返しになりますが、SQLでセキュリティは高まりません。 ただ個人情報に対するアクセスをユーザー権限によって制限する 意図があるのであればテーブルは分けた方が管理しやすいかもしれません。 (実際にはミドルウェアレベルでやることなのでSQLではあまり 制御しないと思いますが)

narusuji
質問者

お礼

ありがとうございます! 分けてもセキュリティには関係無いんですね。 いろいろと調べてみます!

関連するQ&A