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

Ist es schlechtes Design, Arrays innerhalb einer Datenbank zu verwenden?

Kurze Antwort auf den Titel :Nein

Eine etwas längere Antwort :

Sie sollten lernen, Arrays zu verwenden, wenn dies angemessen ist. Arrays sind an sich kein schlechtes Design, sie sind so atomar wie ein zeichenveränderliches Feld (Array von Zeichen, nicht wahr?) und sie existieren, um unser Leben einfacher und unsere Datenbanken schneller und leichter zu machen. Es gibt Probleme in Bezug auf die Portabilität (die meisten Datenbanksysteme unterstützen keine Arrays oder tun dies auf andere Weise als Postgres)

Beispiel:

Sie haben einen Blog mit Posts und Tags, und jeder Post kann 0 oder mehr Tags haben. Als erstes fällt mir ein, eine andere Tabelle mit zwei Spalten postid zu erstellen und tagid und weisen Sie die Tags in dieser Tabelle zu.

Wenn wir Beiträge mit Tagid durchsuchen müssen, ist die zusätzliche Tabelle erforderlich (natürlich mit entsprechenden Indizes).

Wenn wir jedoch nur möchten, dass die Tag-Informationen als zusätzliche Informationen des Beitrags angezeigt werden, können wir einfach eine ganzzahlige Array-Spalte in die Tabelle der Beiträge einfügen und die Informationen daraus extrahieren. Dies kann immer noch mit der zusätzlichen Tabelle erfolgen, aber die Verwendung eines Arrays reduziert die Größe der Datenbank (keine erforderlichen zusätzlichen Tabellen oder zusätzlichen Zeilen) und vereinfacht die Abfrage, indem wir unsere ausgewählten Abfragen mit einer weniger Tabelle ausführen können, und scheint einfacher zu verstehen durch menschliches Auge (der letzte Teil liegt im Auge des Betrachters, aber ich denke, ich spreche hier für eine Mehrheit). Wenn unsere Tags vorinstalliert sind, ist nicht einmal ein Join erforderlich.

Das Beispiel mag dürftig sein, aber es ist das erste, das mir in den Sinn kam.

Fazit :

Arrays sind nicht erforderlich. Sie können schädlich sein, wenn Sie sie falsch verwenden. Sie können ohne sie leben und haben eine großartige, schnelle und optimierte Datenbank. Wenn Sie Portabilität in Betracht ziehen (z. B. das Umschreiben Ihres Systems, um mit anderen Datenbanken zu arbeiten), dürfen Sie keine Arrays verwenden.

Wenn Sie sicher sind, dass Sie bei Postgres bleiben, können Sie Arrays verwenden, wo Sie es für angemessen halten. Sie existieren aus einem bestimmten Grund und sind weder schlechtes Design noch nicht konform. Wenn Sie sie an den richtigen Stellen verwenden, können sie bei der Einfachheit von Datenbankstrukturen und Ihrem Code sowie bei der Speicherplatz- und Geschwindigkeitsoptimierung ein wenig helfen. Das ist alles.