sql >> Databasteknik >  >> RDS >> PostgreSQL

skapa en miljontabell i en databas?

Om du behöver en miljon tabeller i din databas, gör du det fel.

Tabeller är avsedda att representera strukturellt och konceptuellt olika data. Och jag vägrar tro att du arbetar med en miljon olika koncept i din ansökan.

Ibland tror nybörjare att de borde skapa en tabell per användare, till exempel. Men "en användare" är ett koncept, och du lagrar samma information för varje användare (namn, e-postadress, användarnamn, lösenord, till exempel), så det borde vara ett tabell, där varje användare bara är en separat rad.

Det låter som att du gör ett liknande misstag, kanske inte med användare, utan med någon annan abstraktion som du har många exempel på. Varje instans bör vara en rad i en enda tabell.

Om du beskriver för oss vad det är du försöker lagra i en databas kan vi nästan säkert hjälpa dig att ta reda på hur det ska mappas till tabeller.

Redigera
efter att ha läst dina kommentarer (som egentligen borde redigeras till själva frågan), här är mina tankar:

Om all data är strukturerad på samma sätt (som trippel), kan du helt enkelt lagra allt i en enda tabell med tre kolumner och sedan lägga till de nödvändiga indexen för effektiva uppslagningar.

Om alla predikaten är kända i förväg, kan du gör en tabell per predikat, men jag är inte riktigt säker på hur vettigt det skulle vara, ens.

Det renaste alternativet skulle förmodligen vara att ha fyra tabeller:
(id, subject) , (id, predicate) , (id, object) ,(subjectid, predicateid, objectid) .



  1. Hur IF-utlåtandet fungerar i SQL Server

  2. få data från flera tabeller i MySQL med olika var-förhållanden

  3. Varför kan jag inte använda en variabel i ett postgres backslash-kommando (\COPY)

  4. Är det möjligt att namnge SQL-resultatkolumner från rader i en annan tabell? (Postgres)