ブログを保持するテーブルが1つあるとします。データベースフィールドのXMLSerializedオブジェクト。それは良いデザインですか?
フィールド画像でID (int)| Title (varchar 50) | Value (longtext) | Images (longtext)| ....
私はブログに関連付けられている画像のXML直列化されたリストを格納します。 スキーマは次のようになります。
この目的のために別のテーブルを使用する必要がありますか?
ブログを保持するテーブルが1つあるとします。データベースフィールドのXMLSerializedオブジェクト。それは良いデザインですか?
フィールド画像でID (int)| Title (varchar 50) | Value (longtext) | Images (longtext)| ....
私はブログに関連付けられている画像のXML直列化されたリストを格納します。 スキーマは次のようになります。
この目的のために別のテーブルを使用する必要がありますか?
はい、画像を別のテーブルに配置する必要があります。同じフィールドに複数の値を指定すると、非正規化されたデータが表示され、データベースでの作業が難しくなります。
すべてのルールと同様に、複数の値を持つXMLをデータベースの1つのフィールドに入れることは意味があります。
データが一緒に書かれ常に読み取り/すべきである:最初のルールは、ということです。値の1つだけを読み込んだり更新したりする必要はありません。
- ストレージ効率を、スペースが問題であることが証明された場合:それが満たされた場合
は、多くの理由が一つのフィールドで一緒にデータを置くことができます。
実際の画像データ自体を照会する必要があるかどうかによって異なります。特定の画像や特定の属性を持つ画像を照会する必要がある場合は、その画像データを別の方法で保存するのが最善でしょう。
それ以外の場合は、そのままにしてください。
ただし、必要に応じてSELECTにフィールドを含めてください。
私は確かに別のテーブルを使用します。 XMLを使用している場合、すべてのイメージへの参照を参照して更新する必要がある場合はどうなりますか? (あなただけではなくUpdate blog_images Set ...
を行う、または各行に対してXMLを解析、更新になるだろうし、
は、私は、この目的のために別のテーブルを使用する必要がありますか?それぞれの更新されたXMLを再生成?
必須ではありませんが、不要なときにクエリの画像フィールドを選択しないようにするだけです。ただし、スキーマを非正規化したい場合は、別のテーブルを使用することができます。 a join
。
これはちょっと「内部プラットフォーム」ですが、それはうまくいくでしょう。一部のRDBMSプラットフォームでは、XML型の列とSQL/XMLを使用してこれを実現することもできますが、別の表を使用するとイメージの問合せが改善されます。
このデータが不透明なストレージである必要がある場合は、おそらく多分です。しかし、一般的には、XML全体をアプリケーション層に戻して面白いことをする必要があります(または、プラットフォームによってはSQL/XMLを使用しますが、DBとは異なり、ほとんどの場合、そのような処理を行う場所)。
他のすべてのケースで私の助言:別表
画像の実際の画像やURLのリストはありますか? –
URLと各画像のディレクトリ。 – Sanosay