php+mysqlでポータルサイトを作りたいと思っているのですが、
今データベースを構築しようと思いまして
仮にsalonlistというテーブルを作って
そこのフィールドとして
name(お店名)、nameyomi(お店読みがな)、category(カテゴリー)、area(エリア)
の4つを作りました。
そこで次に
各お店のテーブル
例えば、aaa(AAA美容室)とします。
aaaの中にフィールドで
name、nameyomi、tel、address、time、campain1name、campain1naiyou…
と作っていったとして、salonlistとaaaのnameの内容がかぶるので
修正するのなら2つのテーブルを修正することになりますよね?
だとするとsalonlistにすべてお店内容まで書いていった方がいいと言う事になります?
どっちが利便性がいいのでしょうか?
No.3ベストアンサー
- 回答日時:
>PKとFKがあって
>テーブルとテーブル間を連結させるといった感じでしょうか?
>ということは、親と子状態ということで、テーブルが異なってもキーで連結してるから、
>両方を修正しなくても、表現あってるか微妙ですが、シンクロしているということですね。
どのような意味のシンクロかは不明ですが、お互いに参照するからにはシンクロしていますね ^ ^
PKとFKですが、「PKはテーブルに必ず1個以上なければいけない主キー」と呼ばれるキーで、「FKは外部テーブルを参照するために使う外部キー」と呼ばれるキーで外部参照しなければ不要なので、似てはいますが意味としてはかなり違うと思います。
個人的な考えですが、アクセス時間やメンテナンス性を考えると複数テーブルによる運用になるので「その時はPKと伴にFKが重要」になると思います。
最初は、FKを考えずに1個のテーブルでPKの役目などを十分に考え「アクセス時間やメンテナンス性を検討し、PKやFKを決定」する方が良いと思います。 当然、その段階になればSQLiteでは対応できないのでMySQLあたりが最適と思います。
なお、初心者はPKを1個のキーと思いがちですが複数のキーでPKとすることもできますし、PKに最適なキーがなければ自動的に生成させるPKというのもあります。
何度も丁寧にありがとうございます。
何となく、データベースの作り方がわかってきました!!
とりあえず最初に考えたやり方
サロンリストテーブルと、お店情報テーブルと、わけて作っていきたいと思います。
また作っていくうちにわかることもありそうです。
No.2
- 回答日時:
>そうです。
salonlistはお店情報を扱うテーブルのつもりです。>やはり、ひとつのテーブルで全データを入れたほうがいいのですね。
机上でじっくりと検討すると・・・大抵は複数のテーブルで運用することになると思います。
また、その方が動作も速くなると思いますが、その辺が予想できないなら、1個のテーブルで運用し、徐々にテーブルを分割するのも勉強としては悪くはないと思います。
>例えば、お店紹介文とか文章で長いものもデータベースに格納できるのでしょうか?
下記のURLを参照し、適切な型を選べは可能と思います。
LONGTEXTなら4Gbですね ^ ^
紹介文という明確な目的があるので、これは独立したテーブルで「PKが店名、フィールド1・紹介文、フィールド2・・・」という感じかな?
勉強ついでに、PKの店名を外部参照して必ず店名があることを確認してからINSERTするようにすると良いと思います。
このような使い方ならMySQLではなく、超簡単なSQLiteが良いのかなぁ~と思ってしましまいます。
ありがとうございます。
pkはまだ勉強していないとこで軽く調べたところ
PKとFKがあって
テーブルとテーブル間を連結させるといった感じでしょうか?
ということは、親と子状態ということで、テーブルが異なってもキーで連結してるから、両方を修正しなくても、表現あってるか微妙ですが、シンクロしているということですね。
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にすべてお店内容まで書いていった方がいいと言う事になります?
基本はそうです。
テーブルが複数あって、テーブル間で重複するフィールドがあると、参照したり独立したテーブルを作成するなどして、効率やメンテナンス性を向上させます。
ありがとうございます。
そうです。salonlistはお店情報を扱うテーブルのつもりです。
まだまだ初心者でした。つめこみすぎると重くなるのかなと余計なこと考えました。
やはり、ひとつのテーブルで全データを入れたほうがいいのですね。
すいません、初歩的なことなんですが、
例えば、お店紹介文とか文章で長いものもデータベースに格納できるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL [1000地域 × 10カテゴリー = 1万件のテーブル]!グループ化? 1 2023/06/14 23:56
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
csvファイルのデータをSQLiteに...
-
PHPでmySQLのテーブルを作成したい
-
変数にNULLを代入したい
-
SQLで返り値が空とでる
-
PHPで[]の使い方について
-
PHP+MySQLでの配列のinsert文に...
-
ResultSetインターフェイスでの...
-
配列に値が入らない
-
エクセルVBAについて
-
<VB.NET>INSERT文でDBにデータ...
-
JAVA SQLServerException 列名 ...
-
sqlから多次元配列に要素を格納...
-
VB.NET エラーになる箇...
-
MySQLにHTMLタグを挿入したい
-
mysqliを使ってデータベースを...
-
GROUP_CONCATで条件指定
-
SQLインジェクション対策
-
htmlとphpの分離
-
XAMMPが起動しません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
トランザクション処理
-
MySQLでデータベースにデータin...
-
PHPシステムでSQLのUPDATEがあ...
-
変数にNULLを代入したい
-
phpにて出欠登録管理を作成して...
-
csvをDBへ読み込んだら、NULLが...
-
php sqlite count 列数取得
-
クエリObjectをforeachで回す時...
-
PHPでフォームからデータDBに書...
-
DB Error: no such field
-
日またぎの計算
-
OracleからAccessへのインポート
-
PHPでいいね機能を作りたいので...
-
PHP PDOを利用してカラムの削除...
-
SQLで返り値が空とでる
-
PHPでPostgreSQLのテーブルを表...
-
PHPでmySQLのテーブルを作成したい
-
PHP prepare フィールド名をエ...
-
検索結果が多い時の分割(件数...
-
外部結合で参照列が複数あるSQL
おすすめ情報