PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL:Vorteile einer ENUM gegenüber einer Eins-zu-Viele-Beziehung?

Das Beispiel zeigt PostgreSQL, aber andere RDBMS haben eine ähnliche Syntax

Das ist falsch. Es ist keine ISO/IEC/ANSI-SQL-Anforderung, daher stellen die kommerziellen Datenbanken es nicht bereit (Sie sollten Nachschlagetabellen bereitstellen). Das kleine Ende der Stadt implementiert verschiedene "Extras", implementiert jedoch nicht die strengeren Anforderungen oder das Grunzen des großen Endes der Stadt.

Wir haben auch keine ENUMs als Teil eines DataType, das ist absurd.

Der erste Nachteil von ENUMs ist, dass sie nicht standardisiert und daher nicht portierbar sind.

Der zweite große Nachteil von ENUMs ist, dass die Datenbank geschlossen ist. Die Hunderte von Berichtstools, die auf einer Datenbank (unabhängig von der App) verwendet werden können, können sie nicht finden und können daher die Namen/Bedeutungen nicht projizieren. Wenn Sie eine normale Standard-SQL-Lookup-Tabelle hatten, ist dieses Problem beseitigt.

Das dritte ist, wenn Sie die Werte ändern, müssen Sie DDL ändern. In einer normalen Standard-SQL-Datenbank fügen Sie einfach eine Zeile in der Nachschlagetabelle ein/aktualisieren/löschen.

Schließlich können Sie nicht einfach eine Liste des Inhalts der ENUM erhalten; Sie können mit einer Nachschlagetabelle. Noch wichtiger ist, dass Sie einen Vektor haben, mit dem Sie alle Dimension-Fact-Abfragen durchführen können, sodass Sie nicht aus der großen Fact-Tabelle und GROUP BY auswählen müssen.