0

Mysql で作成されたテーブル ユーザー プロファイルがあり、多くのオプションの列が含まれています。(約30列)

id, tel, live, mob, email...

Q1. 30 個のテーブルに格納する (結合を使用する) か、1 つのテーブルに格納する必要がありますか?

30テーブルの場合

ユーザーがデータを保存しなかった場合、多くの空のフィールドを保存できます。

Q.クエリを実行すると、結合が 30 回必要になります。1 つのテーブルを選択してクエリを実行すると、パフォーマンスが低下しますか? (クエリごとに書くのはもっと難しくなります)

1テーブルの場合

列には多くの空のフィールドがあります

Q. NULL または「空」で保存する必要がありますか?

4

1 に答える 1

0

Q1. 30 個のテーブルに格納する (結合を使用する) か、1 つのテーブルに格納する必要がありますか?

いいえ、これは良い考えではありません

Q. クエリを実行すると、結合が 30 回必要になります。1 つのテーブルを選択してクエリを実行すると、パフォーマンスが低下しますか? (クエリごとに書くのはもっと難しくなります)

はい、これはパフォーマンスに悪影響を及ぼします

一般に、テーブルを比較的小さくしたい (私の意見) が、ユーザー名、電子メール、パスワード、last_login など、必要なユーザーの関連する値をグループ化する必要があります。

30 列は少し高いように見えますが、それには正当な理由があるかもしれませんが、ほとんどの場合、多くのフィールドが空であることがわかった場合は、デザインを再検討する必要があります。これらのフィールドが空でない場合、どのような状況になりますか? たとえば、ユーザーが住所情報を入力したときにのみこれらのフィールドが空でない場合は、住所テーブルを作成する必要があります。

この投稿は、null と空の質問にうまく対応しています: MySQL、NULL または空の文字列を挿入する方が良いですか?

于 2013-10-01T23:41:01.187 に答える