配列をデータベースに格納するのが実際に良い習慣かどうか疑問に思いますか?json_encode
私はよりも使う傾向がありますがserialize
、それが良い考えかどうか疑問に思っていました。そうでない場合は、いくつかの小さな変更を加えて、配列をコンマで単純化することができます。
2 に答える
いいえ、それはひどい習慣です。CSV、JSON*、serialize()
またはあらゆる種類のシリアル化されたデータをリレーショナルデータベースに挿入することはお控えください。非正規化は、ほとんどの場合、悪い考えです。自分が何をしているのかを本当に理解していない限り、やらないでください。そうしないと、 this、this、this、this、...
そうすることで、あなたは失うか、あなたの能力を著しく妨げます:
- sを使用
JOIN
します。 - 特定の要素を検索または変更する
- 参照整合性の強制
- インデックスの使用によるメリット
- また、スペースも無駄にします
衒学的に聞こえるかもしれませんが、人々がこれを行うのを見るのは私のペットの不満の1つです-特に、正しい方法で行った場合に回避されるであろうSOで尋ねられる大量の質問に照らして.
RDBMS で 1 対多および多対多の関係を行う正しい方法を次に示します。
*一部の SQL データベースには JSON のサポートが組み込まれていますが、JSON が不要になるようにデータを再構築することをお勧めします。
使用パターンによって異なります。配列のより小さな部分にアクセスする必要がある場合 (たとえば、where 句などで使用する場合)、それは悪い考えです。関連する。その小さなデータの断片を何度も何度も抽出するという大きなオーバーヘッドが発生することになります。
一方、データベースをデータ ストアとして使用しているだけで、格納された配列をスライスする必要がない場合 (単に挿入して取得するだけ)、シリアライズされたデータとして、スペースの無駄を除けば、おそらくまったく問題はありません。 /json 形式は「冗長」になりがちで、生データ自体よりも多くのスペースを占有します。