dポイントプレゼントキャンペーン実施中!

php+mysqlでポータルサイトを作りたいと思っているのですが、

今データベースを構築しようと思いまして
仮にsalonlistというテーブルを作って
そこのフィールドとして
name(お店名)、nameyomi(お店読みがな)、category(カテゴリー)、area(エリア)
の4つを作りました。

そこで次に
各お店のテーブル
例えば、aaa(AAA美容室)とします。
aaaの中にフィールドで
name、nameyomi、tel、address、time、campain1name、campain1naiyou…
と作っていったとして、salonlistとaaaのnameの内容がかぶるので
修正するのなら2つのテーブルを修正することになりますよね?
だとするとsalonlistにすべてお店内容まで書いていった方がいいと言う事になります?

どっちが利便性がいいのでしょうか?

A 回答 (3件)

>PKとFKがあって


>テーブルとテーブル間を連結させるといった感じでしょうか?
>ということは、親と子状態ということで、テーブルが異なってもキーで連結してるから、
>両方を修正しなくても、表現あってるか微妙ですが、シンクロしているということですね。
どのような意味のシンクロかは不明ですが、お互いに参照するからにはシンクロしていますね ^ ^

PKとFKですが、「PKはテーブルに必ず1個以上なければいけない主キー」と呼ばれるキーで、「FKは外部テーブルを参照するために使う外部キー」と呼ばれるキーで外部参照しなければ不要なので、似てはいますが意味としてはかなり違うと思います。

個人的な考えですが、アクセス時間やメンテナンス性を考えると複数テーブルによる運用になるので「その時はPKと伴にFKが重要」になると思います。

最初は、FKを考えずに1個のテーブルでPKの役目などを十分に考え「アクセス時間やメンテナンス性を検討し、PKやFKを決定」する方が良いと思います。 当然、その段階になればSQLiteでは対応できないのでMySQLあたりが最適と思います。

なお、初心者はPKを1個のキーと思いがちですが複数のキーでPKとすることもできますし、PKに最適なキーがなければ自動的に生成させるPKというのもあります。
    • good
    • 0
この回答へのお礼

何度も丁寧にありがとうございます。
何となく、データベースの作り方がわかってきました!!

とりあえず最初に考えたやり方
サロンリストテーブルと、お店情報テーブルと、わけて作っていきたいと思います。
また作っていくうちにわかることもありそうです。

お礼日時:2010/12/14 16:53

>そうです。

salonlistはお店情報を扱うテーブルのつもりです。
>やはり、ひとつのテーブルで全データを入れたほうがいいのですね。
机上でじっくりと検討すると・・・大抵は複数のテーブルで運用することになると思います。
また、その方が動作も速くなると思いますが、その辺が予想できないなら、1個のテーブルで運用し、徐々にテーブルを分割するのも勉強としては悪くはないと思います。


>例えば、お店紹介文とか文章で長いものもデータベースに格納できるのでしょうか?
下記のURLを参照し、適切な型を選べは可能と思います。
LONGTEXTなら4Gbですね ^ ^
紹介文という明確な目的があるので、これは独立したテーブルで「PKが店名、フィールド1・紹介文、フィールド2・・・」という感じかな?

勉強ついでに、PKの店名を外部参照して必ず店名があることを確認してからINSERTするようにすると良いと思います。


このような使い方ならMySQLではなく、超簡単なSQLiteが良いのかなぁ~と思ってしましまいます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/12/13 09:28

データベースの基礎が不足しています 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にすべてお店内容まで書いていった方がいいと言う事になります?
基本はそうです。
テーブルが複数あって、テーブル間で重複するフィールドがあると、参照したり独立したテーブルを作成するなどして、効率やメンテナンス性を向上させます。
    • good
    • 0
この回答へのお礼

ありがとうございます。
そうです。salonlistはお店情報を扱うテーブルのつもりです。
まだまだ初心者でした。つめこみすぎると重くなるのかなと余計なこと考えました。
やはり、ひとつのテーブルで全データを入れたほうがいいのですね。

すいません、初歩的なことなんですが、
例えば、お店紹介文とか文章で長いものもデータベースに格納できるのでしょうか?

お礼日時:2010/12/10 14:30

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