新しいバージョンのサードパーティアプリケーションを使用しています。このバージョンでは、データベース構造が変更され、「パフォーマンスを向上させるため」と言われています。
古いバージョンのDBは、次のような一般的な構造を持っていました。
TABLE ENTITY
(
ENTITY_ID,
STANDARD_PROPERTY_1,
STANDARD_PROPERTY_2,
STANDARD_PROPERTY_3,
...
)
TABLE ENTITY_PROPERTIES
(
ENTITY_ID,
PROPERTY_KEY,
PROPERTY_VALUE
)
そのため、基本プロパティのフィールドを含むメインテーブルと、ユーザーが追加したカスタムプロパティを管理するための別のテーブルがありました。
挿入されたDBの新しいバージョンは、次のような構造になっています。
TABLE ENTITY
(
ENTITY_ID,
STANDARD_PROPERTY_1,
STANDARD_PROPERTY_2,
STANDARD_PROPERTY_3,
...
)
TABLE ENTITY_PROPERTIES_n
(
ENTITY_ID_n,
CUSTOM_PROPERTY_1,
CUSTOM_PROPERTY_2,
CUSTOM_PROPERTY_3,
...
)
したがって、ユーザーがカスタムプロパティを追加すると、列の最大数(アプリケーションによって管理される)に達するENTITY_PROPERTY
まで新しい列が現在のテーブルに追加され、次に新しいテーブルが作成されます。
だから、私の質問は:これはDB構造を設計する正しい方法ですか?これが「パフォーマンスを向上させる」唯一の方法ですか?古い構造では多くの結合または副選択が必要でしたが、この構造は私にはあまり賢くない(または正しくない)ようです...