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

Sådan gemmer du array eller flere værdier i en kolonne

Du har et par spørgsmål her, så jeg vil behandle dem separat:

Jeg skal gemme et antal udvalgte elementer i ét felt i en database

Min generelle regel er:lad være. Dette er noget, som næsten kræver en anden tabel (eller tredje) med en fremmednøgle. Sikker på, det kan virke nemmere nu, men hvad hvis brugssagen kommer, hvor du rent faktisk skal forespørge efter disse elementer individuelt? Det betyder også, at du har flere muligheder for doven instantiering, og du har en mere ensartet oplevelse på tværs af flere rammer/sprog. Derudover er der mindre sandsynlighed for, at du har problemer med forbindelsestimeout (30.000 tegn er meget).

Du nævnte, at du overvejede at bruge ENUM. Er disse værdier faste? Kender du dem i forvejen? Hvis ja, ville dette være min struktur:

Grundtabel (det du har nu):

| id primary_key sequence | -- other columns here.

Varetabel:

| id primary_key sequence | descript VARCHAR(30) UNIQUE

Korttabel:

| base_id bigint | items_id bigint

Korttabel ville have fremmednøgler, så base_id afbildes til basistabellen, og items_id vil tilknyttes elementtabellen.

Og hvis du gerne vil have en nem måde at hente dette fra en DB, så opret en visning, der udfører joins. Du kan endda oprette indsættelses- og opdateringsregler, så du praktisk talt kun har at gøre med én tabel.

Hvilket format skal jeg bruge til at gemme dataene?

Hvis du skal gøre noget som dette, hvorfor så ikke bare bruge en tegnafgrænset streng? Det vil tage mindre processorkraft end en CSV, XML eller JSON, og det vil være kortere.

Hvilken kolonnetype skal jeg bruge til at gemme dataene?

Personligt ville jeg bruge TEXT . Det lyder ikke som om du ville vinde meget ved at gøre dette til en BLOB og TEXT , efter min erfaring, er lettere at læse, hvis du bruger en form for IDE.



  1. GROUP eller DISTINCT efter JOIN returnerer dubletter

  2. 6 grunde til, at Microsoft Access kan hjælpe din virksomhed

  3. Hvordan får man antallet af elementer i et JSON-array gemt som CLOB med Oracle 12c?

  4. Vedhæftede filer i Oracle Applications R12