前回の毎週の会議中に、データベース管理のバックグラウンド経験がない人がこの質問を持ち出しました。
「データを複数行ではなくインライン(文字列)に保存することを正当化するシナリオはありますか?」
countryStates
国の州を保存する場所と呼ばれるテーブルがあるとします。この例では米国を使用します。怠惰にするためにすべての国をリストすることはしません。
そこには2つの列があります。1つが呼び出さCountry
れ、もう1つが呼び出されましたStates
。ここで説明し、@ srutzkyの回答で提案されているように、これはISO 3166-1 alpha-3でPK
定義されたコードになります。
テーブルは次のようになります。
+---------+-----------------------+-------------------------------------------------------+
| Country | States | StateName |
+---------+-----------------------+-------------------------------------------------------+
| USA | AL, CA, FL,OH, NY, WY | Alabama, California, Florida, Ohio, New York, Wyoming |
+---------+-----------------------+-------------------------------------------------------+
この同じ質問を友人の開発者に尋ねたところ、データトラフィックサイズの観点からは、これは役立つかもしれませんが、このデータを操作する必要がある場合はそうではないと述べました。この場合、リスト内のこの文字列を変換できるアプリケーションコードにインテリジェンスが必要です(このテーブルにアクセスできるソフトウェアがコンボボックスを作成する必要があるとしましょう)。
このモデルはあまり有用ではないと結論付けましたが、これを有効にする方法があるのではないかと疑いました。
私が聞きたいのは、実際に機能する方法で、このようなことをすでに見たり聞いたりしたりしていないかどうかです。
a;b;c
、あなたが得るあなたの文字列を解析するためのフロントエンドを使用しa
、b
、c
多分、彼らと何かをやって、実行上のキャリー?。それがそのような特定の種類の特定のニーズに合うかもしれないと感じてください...考え直して、いいえ。常にIDを保存し、テーブルに結合して、FEにコンテンツを送信できる連結された文字列を作成できます...