2011-06-04 17 views
1

私は何が良いか知りたいです。データが少ない列や、データが多い列が少ない

  1. すべてのデータを保存する(例えば、Skypeのため、ICQは、Facebook、stackoverflowの、等、等、等)のカラム分離カラム内データ保存
  2. (スカイプ用分離カラム内のプロファイル、ICQは、Facebook、stackoverflowの、など)

mysqlサーバの方が適切で簡単です。

+1

あなたのデータはどのように見えますか?関係性の観点からはどういう意味がありますか?それはあなたのデータの構造に依存します。 – tjameson

答えて

4

これらをすべて1つの列に保存するとfirst normal formに違反し、データのクエリと集計が非常に困難になります。

1つの列を使用して各情報を格納します。

各サービスのプロファイルデータを保存する場合は、サービスごとに個別のテーブルを使用し、ユーザーIDに外部キーを割り当てる方がよい場合もあります。

+0

良いアドバイス。クエリが効率的であれば、SQLは非常に効率的です。 – tjameson

+0

OK。問題の再構築を忘れてしまった。 sqlのカラム数が少ない場合は、HDDの読み込み量が少なくなります。 – genesis

+0

@genesis - 必ずしもそうではありません。これは、列の数と列のサイズによって異なります。あなたはデータベースの設計段階にあります。あなたが時期尚早な最適化を行っています(最適化さえすれば)。 – Oded

1

複数の列を使用すると、柔軟性が大幅に向上します。

これらのフィールドのいずれかに基づいてデータベースを照会する場合は、すべてが1つの列にまとめられていると非常に困難です。また、あなた自身とあなたの後に来る人のために、データベースの管理をより困難にします。

2

抽象的である可能性のある正規化に関する議論を超えて、適切な質問をすることで、1つのアプローチが他のアプローチよりも優れている理由を明確にするのに役立ちます。

  1. 特定のアカウントを照会しますか?たとえば、すべてのSkypeアカウントを検索するか、特定のSkypeアカウントを検索します。あなたの2つのアプローチのうち、それは簡単になりますか?

  2. いずれかのアカウントタイプのストレージに問題があった場合、どのアプローチを簡単に修正できると思いますか?

  3. アカウントの種類を簡単に拡張できる方法はありますか?たとえば、Skype、ICQ、Facebook、StackOverflowを構築します。明日、あなたはTwitterアカウントを保存したいと思います。どちらのアプローチで簡単にできるのでしょうか?

  4. 他の開発者が把握し、維持して拡張するのが簡単なアプローチはありますか?たとえば、システムが非常に人気が高くなり、開発者を雇って仕事を引き継ぐことができます。業界のベストプラクティスとよりインラインであるアプローチは、他の開発者が理解しやすくなります。

あなたはこのような問題を分析する場合、各ユーザが複数のアカウントを表す複数の行を有することができるアカウントを持つ、おそらく別の列またはテーブルに情報を記憶することは優れたアプローチであることは明らかです。

+0

1.私はその列を検索しません。 2.サーバー/テーブルクラッシュの場合はどういう意味ですか? 3.はい、それは本当です。あなたがここで言ったことはすべて真実ですが、今私は本当に正しい答えを得たいと思っています。つまり、私にとっては、SERVERにとっては何が良いのでしょうか。そう ?しかし、回答ありがとう – genesis

+0

@genesis - RE:#2。クラッシュではありません。システムが運用に入った後に発見した情報を格納する方法に誤りがあったり、情報を格納する方法に必要な修正があるとします。 – Thomas

+0

あなたはすべてのICQをリセットする必要がありますが、Skypeデータを保持する必要がありますが、これは不可能です。私は正しい? – genesis

関連する問題