13

配列をデータベースに格納するのが実際に良い習慣かどうか疑問に思いますか?json_encode私はよりも使う傾向がありますがserialize、それが良い考えかどうか疑問に思っていました。そうでない場合は、いくつかの小さな変更を加えて、配列をコンマで単純化することができます。

4

2 に答える 2

49

いいえ、それはひどい習慣です。CSV、JSON*、serialize()またはあらゆる種類のシリアル化されたデータをリレーショナルデータベースに挿入することはお控えください。非正規化は、ほとんどの場合、悪い考えです。自分が何をしているのかを本当に理解していない限り、やらないでください。そうしないと、 thisthisthisthis、...

そうすることで、あなたは失うか、あなたの能力を著しく妨げます:

  • sを使用JOINします。
  • 特定の要素を検索または変更する
  • 参照整合性の強制
  • インデックスの使用によるメリット
  • また、スペースも無駄にします

衒学的に聞こえるかもしれませんが、人々がこれを行うのを見るのは私のペットの不満の1つです-特に、正しい方法で行った場合に回避されるであろうSOで尋ねられる大量の質問に照らして.

RDBMS で 1 対多および多対多の関係を行う正しい方法を次に示します。

*一部の SQL データベースには JSON のサポートが組み込まれていますが、JSON が不要になるようにデータを再構築することをお勧めします。

于 2011-09-09T16:40:28.343 に答える
7

使用パターンによって異なります。配列のより小さな部分にアクセスする必要がある場合 (たとえば、where 句などで使用する場合)、それは悪い考えです。関連する。その小さなデータの断片を何度も何度も抽出するという大きなオーバーヘッドが発生することになります。

一方、データベースをデータ ストアとして使用しているだけで、格納された配列をスライスする必要がない場合 (単に挿入して取得するだけ)、シリアライズされたデータとして、スペースの無駄を除けば、おそらくまったく問題はありません。 /json 形式は「冗長」になりがちで、生データ自体よりも多くのスペースを占有します。

于 2011-09-09T16:40:38.827 に答える