PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

È una cattiva progettazione utilizzare gli array all'interno di un database?

Breve risposta al titolo :No

Risposta un po' più lunga :

Dovresti imparare a usare gli array quando appropriato. Gli array non sono di per sé un cattivo design, sono atomici come un campo variabile di caratteri (array di caratteri, no?) ed esistono per rendere le nostre vite più facili e i nostri database più veloci e leggeri. Ci sono problemi riguardo alla portabilità (la maggior parte dei sistemi di database non supporta gli array o lo fa in modo diverso da Postgres)

Esempio:

Hai un blog con post e tag e ogni post può avere 0 o più tag. La prima cosa che viene in mente è creare una tabella diversa con due colonne postid e tagid e assegna i tag in quella tabella.

Se dobbiamo cercare tra i post con tagid, allora è necessaria la tabella extra (con indici appropriati ovviamente).

Ma se vogliamo che le informazioni sui tag vengano mostrate solo come informazioni extra del post, possiamo facilmente aggiungere una colonna di array di interi nella tabella dei post ed estrarre le informazioni da lì. Questo può ancora essere fatto con la tabella aggiuntiva, ma l'utilizzo di un array riduce le dimensioni del database (non sono necessarie tabelle o righe aggiuntive) e semplifica la query consentendoci di eseguire le nostre query selezionate con l'unione di una tabella in meno e sembra più facile da capire dall'occhio umano (l'ultima parte è negli occhi di chi guarda, ma penso di parlare qui a maggioranza). Se i nostri tag sono precaricati, non è necessario nemmeno un join.

L'esempio può essere scarso ma è il primo che mi è venuto in mente.

Conclusione :

Gli array non sono necessari. Possono essere dannosi se li usi in modo sbagliato. Puoi vivere senza di loro e avere un database eccezionale, veloce e ottimizzato. Quando si considera la portabilità (ad es. riscrivendo il sistema in modo che funzioni con altri datab), non è necessario utilizzare gli array.

Se sei sicuro che rimarrai con Postgres, puoi tranquillamente utilizzare gli array dove ritieni appropriato. Esistono per una ragione e non sono né un cattivo design né non conformi. Quando li usi nei posti giusti, possono aiutare un po' con la semplicità delle strutture del database e del codice, nonché con l'ottimizzazione dello spazio e della velocità. Questo è tutto.