2016-05-20 5 views
2

私たちはcrmベースのアプリケーションを構築しており、PDOを使用してデータベースにアクセスしています。連絡先、リード、アカウントなど、さまざまなモジュールが用意されています。モジュールでは、複数の電話番号、電子メールアドレス、住所などの複数の情報を追加することができます。 このように複数の情報を保存するには、データベース内の配列をシリアライズします。たとえば、データベース内のEmail列にserialize配列を格納している複数の電子メールの場合です。配列をデータベースに保存していますか?

のSerialize形式:フィルタリングなどを使用している間

a:2:{i:0;a:1:{s:5:"value";s:15:"[email protected]";}i:1;a:1:{s:5:"value";s:15:"[email protected]";}} 

我々はその方法を確認したいが、後で問題を作成することはできませんので、誰もが私たちは、これはデータベース内の複数の情報を格納するための正しい方法であることを示唆してくださいすることができますか?私は確かに一般的に等

をフィルタリングを使用しながら、このように問題多くの後を作成することを確認することができる

+0

我々は(ユーザー権限で、たとえば)あまりにもMySQLでシリアライズされた配列を格納しているし、我々が持っていない:

あなたの現在のケースを解決することができる方法の一つは、3つの列を持つテーブルを作成していますこれに関する問題。 – pes502

+0

データを保存するユーザーのためのテーブルだけでなく、名前のようなもの(名前など)の1つで、各ユーザーのIDを持っていて、次にすべてのデータを保存する別のテーブル別のテーブルにユーザーのIDを持つ複数のインスタンスがある可能性がありますか?これはDBを使用する適切な方法です 例:User Jon Doe。名前= Jon last_name = Doeを最初のテーブルに保存します。 IDは自動インクリメントに設定されているため、ID = 1を取得します。次に、表2に挿入した他のすべてのデータをIDとしてのみ設定し、データを設定する人物のIDを使用します。 –

+0

さて、あなたは、データベース内の何かをフィルタリング/ソートすることはできません。はるかに良い仕事をする既存の機能を使用するのではなく、データを取り出して自分のコードですべてを行う必要があります。また、データベース内のシリアライズされた配列は、データベース内のデータベースと似ていますが、非常に悪い考えです。 –

答えて

1

、そのようなアプローチは非常にリレーショナル・データベース・アーキテクチャに対して決定的です。あなたのデータベースを愚かなキー・バリュー・ストレージとして扱う限り、大丈夫ですが、データベースをデータベースとして使用する場合は絶対に受け入れられません。

データベース構造の主なルールは、各エンティティを個別に格納する必要があります。この方法では、標準のSQLメカニズムを使用してアクセスできます。

user_id, param_name, param_value 
関連する問題