• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php+mysqlでポータルサイトを作りたい)

php+mysqlでポータルサイトを作りたい

このQ&Aのポイント
  • phpとmysqlを使用してポータルサイトを構築したいと考えています。データベースの構築をするために、salonlistというテーブルを作成しました。テーブルのフィールドとしては、お店の名前、読みがな、カテゴリー、エリアの4つがあります。
  • さらに、各お店のテーブルを作成する場合、例えばAAA美容室の場合は、名前、読みがな、電話番号、住所、営業時間、キャンペーン情報などをフィールドとして作成することになります。しかし、salonlistとAAA美容室の名前が重複する可能性もあるため、どちらの方法が便利であるか迷っています。
  • 一つ目の方法は、salonlistにお店の全ての情報を含めておくことです。もう一つの方法は、各お店ごとにテーブルを作成し、お店の情報をそのテーブルに記録する方法です。どちらが利便性が高いのか判断が難しいですが、お店の情報が増える度にテーブルを修正する必要があるという点では、salonlistに全ての情報を含める方法が簡単かもしれません。

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

  • ベストアンサー
  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.3

>PKとFKがあって >テーブルとテーブル間を連結させるといった感じでしょうか? >ということは、親と子状態ということで、テーブルが異なってもキーで連結してるから、 >両方を修正しなくても、表現あってるか微妙ですが、シンクロしているということですね。 どのような意味のシンクロかは不明ですが、お互いに参照するからにはシンクロしていますね ^ ^ PKとFKですが、「PKはテーブルに必ず1個以上なければいけない主キー」と呼ばれるキーで、「FKは外部テーブルを参照するために使う外部キー」と呼ばれるキーで外部参照しなければ不要なので、似てはいますが意味としてはかなり違うと思います。 個人的な考えですが、アクセス時間やメンテナンス性を考えると複数テーブルによる運用になるので「その時はPKと伴にFKが重要」になると思います。 最初は、FKを考えずに1個のテーブルでPKの役目などを十分に考え「アクセス時間やメンテナンス性を検討し、PKやFKを決定」する方が良いと思います。 当然、その段階になればSQLiteでは対応できないのでMySQLあたりが最適と思います。 なお、初心者はPKを1個のキーと思いがちですが複数のキーでPKとすることもできますし、PKに最適なキーがなければ自動的に生成させるPKというのもあります。

peco33
質問者

お礼

何度も丁寧にありがとうございます。 何となく、データベースの作り方がわかってきました!! とりあえず最初に考えたやり方 サロンリストテーブルと、お店情報テーブルと、わけて作っていきたいと思います。 また作っていくうちにわかることもありそうです。

その他の回答 (2)

  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.2

>そうです。salonlistはお店情報を扱うテーブルのつもりです。 >やはり、ひとつのテーブルで全データを入れたほうがいいのですね。 机上でじっくりと検討すると・・・大抵は複数のテーブルで運用することになると思います。 また、その方が動作も速くなると思いますが、その辺が予想できないなら、1個のテーブルで運用し、徐々にテーブルを分割するのも勉強としては悪くはないと思います。 >例えば、お店紹介文とか文章で長いものもデータベースに格納できるのでしょうか? 下記のURLを参照し、適切な型を選べは可能と思います。 LONGTEXTなら4Gbですね ^ ^ 紹介文という明確な目的があるので、これは独立したテーブルで「PKが店名、フィールド1・紹介文、フィールド2・・・」という感じかな? 勉強ついでに、PKの店名を外部参照して必ず店名があることを確認してからINSERTするようにすると良いと思います。 このような使い方ならMySQLではなく、超簡単なSQLiteが良いのかなぁ~と思ってしましまいます。

peco33
質問者

お礼

ありがとうございます。 pkはまだ勉強していないとこで軽く調べたところ PKとFKがあって テーブルとテーブル間を連結させるといった感じでしょうか? ということは、親と子状態ということで、テーブルが異なってもキーで連結してるから、両方を修正しなくても、表現あってるか微妙ですが、シンクロしているということですね。

  • gtx456gtx
  • ベストアンサー率18% (194/1035)
回答No.1

データベースの基礎が不足しています m(_ _)m >仮にsalonlistというテーブルを作ってそこのフィールドとして >name(お店名)、nameyomi(お店読みがな)、category(カテゴリー)、area(エリア) >各お店のテーブル例えば、aaa(AAA美容室)とします。 >aaaの中にフィールドで >name、nameyomi、tel、address、time、campain1name、campain1naiyou… 「salonlist」テーブルは、どのような情報を扱うテーブルでしょうか? salonの情報を扱うならフィールドは「name(お店名)、nameyomi(お店読みがな)、category(カテゴリー)、area」と「name、nameyomi、tel、address、time、campain1name、campain1naiyou…」などのフィールドが必要になって、当然 重複する name は1個にしないと駄目です。 >だとするとsalonlistにすべてお店内容まで書いていった方がいいと言う事になります? 基本はそうです。 テーブルが複数あって、テーブル間で重複するフィールドがあると、参照したり独立したテーブルを作成するなどして、効率やメンテナンス性を向上させます。

peco33
質問者

お礼

ありがとうございます。 そうです。salonlistはお店情報を扱うテーブルのつもりです。 まだまだ初心者でした。つめこみすぎると重くなるのかなと余計なこと考えました。 やはり、ひとつのテーブルで全データを入れたほうがいいのですね。 すいません、初歩的なことなんですが、 例えば、お店紹介文とか文章で長いものもデータベースに格納できるのでしょうか?

関連するQ&A