重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

漠然としたタイトルで申し訳ありません。

PHPを使用して、フォームに入力された内容をデータベースに書き込もうと思っています。
書き込む内容としては、施設名や(施設名の)都道府県、住所、電話番号、メールアドレスなどです。

データベースを作る際に、上記の情報を一つのテーブルに全て書き込むべきではないのでしょうか?
都道府県は重複する可能性はありますが、他のデータは重複する事は無いと思います。

運用やセキュリティの観点から見ると、テーブルの個数を増やしたほうが良いのでしょうか?


無い知識で質問させて頂きました。
こんなキーワードで調べると良いよ、というご回答でも頂ければうれしいです。
よろしくお願いします。

A 回答 (2件)

PHPの質問というよりはSQLのものですね。

基本は「正規化」です。

検索性の問題です。
都道府県で集計したいとか、たとえば東京に施設はいくつあるかとか・・・
を考えると都道府県は普通IDを振っておいて別テーブルに入れます。
まぁIDではなく実際の都道府県名を入れておいても同じですが、
集計単位のことを考えると別テーブルが必要になる場合が多いでしょう。

住所はたいていどの施設も1か所につき1つでしょうから、同じテーブルで問題ないと思いますが、電話番号やメールアドレスは
一つとは限りません。
管理方法を調整しつつ別テーブルにした方がいいかもしれません。

どんな方法をとっても「セキュリティ」は対して変わらないと思います。
どちらかというと検索のしやすさとスピードの問題ですね。
(必ずしも検索がしやすいからといってスピードが速いとはかぎらない、逆も然り)

この回答への補足

ご回答ありがとうございます!

とりあえず1施設に1つの電話番号、1つのメールアドレスという事を前提にしています。
アドバイスのとおり、都道府県を別テーブルにしたいと思います。
オラクルブロンズ程度のSQL文しか分からないので、主キー、外部キーなど設定に多少手間取ると思いますが、初めての複数テーブルに挑戦してみます。


ちなみにメールアドレスはabcde@yahoo.co.jpのような形式で、書き込んで良いのでしょうか?
それともローカル部@ドメイン部のように、2つに分けたほうがセキュリティは高まるんでしょうか?
(同じテーブルに2つのデータがあれば関係無いような気がしますが、どうなんでしょうか。)

補足日時:2009/10/26 19:48
    • good
    • 0

>ローカル部@ドメイン部のように、2つに分けたほうがセキュリティは高まるんでしょうか?



繰り返しになりますが、SQLでセキュリティは高まりません。
ただ個人情報に対するアクセスをユーザー権限によって制限する
意図があるのであればテーブルは分けた方が管理しやすいかもしれません。
(実際にはミドルウェアレベルでやることなのでSQLではあまり
制御しないと思いますが)
    • good
    • 0
この回答へのお礼

ありがとうございます!

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

お礼日時:2009/10/27 10:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す