Ist das ein "richtiger" Datenbankentwurf?

Ich arbeite mit der neuen Version einer Drittanbieteranwendung. In dieser Version wird die Datenbankstruktur geändert, sie sagen "um die Leistung zu verbessern".

Die alte Version der DB hatte eine allgemeine Struktur wie folgt:

<code>TABLE ENTITY
(
    ENTITY_ID,
    STANDARD_PROPERTY_1,
    STANDARD_PROPERTY_2,
    STANDARD_PROPERTY_3,
    ...
)

TABLE ENTITY_PROPERTIES
(
    ENTITY_ID,
    PROPERTY_KEY,
    PROPERTY_VALUE
)
</code>

Daher hatten wir eine Haupttabelle mit Feldern für die grundlegenden Eigenschaften und eine separate Tabelle zum Verwalten der benutzerdefinierten Eigenschaften, die vom Benutzer hinzugefügt wurden.

Die neue Version des DB-Installs hat folgende Struktur:

<code>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,
    ...
)
</code>

Wenn der Benutzer nun eine benutzerdefinierte Eigenschaft hinzufügt, wird der aktuellen eine neue Spalte hinzugefügtENTITY_PROPERTY Tisch bis zummaximale Anzahl von Spalten (von der Anwendung verwaltet) erreicht wird, wird eine neue Tabelle erstellt.

Meine Frage lautet also: Ist dies eine korrekte Methode zum Entwerfen einer DB-Struktur? Ist das der einzige Weg zu"Leistungen steigern"? Die alte Struktur erforderte viele Verknüpfungen oder Unterauswahlen, aber diese Struktur scheint mir nicht sehr schlau (oder sogar richtig) zu sein ...

Antworten auf die Frage(5)

Ihre Antwort auf die Frage