2011-06-28 6 views
1

私はPHPとMyISAMを使用していますが、現在私はユーザー用のプロフィールページを持っており、テーブルをどのようにレイアウトするべきかはわかりません。ユーザーIDとプロファイルデータ(10〜15列)を別々に保存する必要がありますか?

私は、友人のためのテーブル(userid + friendid)とコメントのためのテーブルを持っています。(ユーザーの長い説明やカスタムスタイルシートのためのMEDIUMTEXTフィールドのペアを含む、そのページに掲載されました。

プロファイル/余分なユーザーデータをユーザーテーブルから分離し、それを純粋に他のテーブルのチェックに使用することは賢明でしょうか?

友人が表示されているかどうかを確認していた場合や、別のページに何かがあるかどうかを確認していると、各行の多くのフィールドまたは長いフィールドが不適切であるかどうかは不明です。それは非常に主観的だとして

+0

あなたのテーブルスキーマ、およびまさにあなたが分離したいを投稿することができますか? –

+0

重複している可能性があります:http://stackoverflow.com/q/6418154/367456 – hakre

答えて

2

短い答えが多分です。フィールドを使用しない場合はスペースが割り当てられないため、テーブルを区切るとスペースが節約されます。スペースは恐らく問題にならないかもしれませんが(サーバーとユーザーベースによって異なります)、テーブルを結合するとパフォーマンスが低下する可能性がありますが、これはユーザーベースとサーバーによって異なります。私は主キーのインデックスはメモリ内に格納されているので、ルックアップは列の数/行のサイズによって影響されるべきではないと思います。

スピード/パフォーマンス...非正規化

スペース正常化

+0

これは私にとって理にかなっています(ユーザーIDは確かにプライマリキーです)。私はシンプルで小さなアプリケーションであるべきであると確信しています。 –

2

は、基本的には、あなたの質問は、実際にはお答えできませんので、これはチャイムする多かれ少なかれ、いくつかの意見です:

ユーザーからプロファイル/エクストラユーザーデータを分離することが賢明だろう他のテーブルのチェックに純粋に使用しますか?

余分なというユーザーデータですので、そうだと思います。だから、それはユーザーに属しておらず、離れていなければなりません。

私はちょうど別のページに表示したり、何かに彼らの友人のためにチェックした場合は各行の多く/またはいくつかの長いフィールドが不適切である場合、私はわかりませんよ。

ご提供いただいた情報にもお答えできません。しかし、SELECT * FROM TABLE;のクエリしか実行していない場合は、間違いなく不適切です。

+0

私はお詫び申し上げます。テーブルにユーザーIDが必要な場合は、すべてのデータをそこに保存するのが適切です。 –

+0

本当の正規化を達成しますか?あなたの目標は何ですか? – hakre

+0

ノーマライゼーションは私にとって重要なのですが、一方的な方法やそれ以外の方法(正確であっても)を行う前に、アプリケーションの関係をどのように定義すべきかについてもっと読む必要があります。質問、私はお詫び申し上げます。 –

1

私は、プロファイル/余分なユーザーデータのための別のテーブルを作成すると良いと思います。頻繁に使用される列をユーザー表に保管し、新しいuser_profile表の他の列を移動します。現在、10〜15列ありますが、将来は50列以上になる可能性があります。だから、今は分けたほうがいいです。

HTH、

関連する問題