![]() |
Databasstruktur med "egna" fält
Har ett bokningsformulär där mina klienter vill kunna lägga till egna fält. Har kommit fram till att det finns två lösningar på detta:
1: Köra ALTER TABLE och lägga till eller ta bort fält i min "original"-tabell... 2: Skapa relationstabeller: extra_fields Kod:
field_id Kod:
reservation_id Alternativ till (1): Ha en originaltabell och en extra_fields-tabell som man kör alter table på. Vilket av dessa alternativ är att föredra? Vi snackar 5000-10000 rader och uppåt i tabellen. |
Jag tycker i 9 fall av 10 att det är bättre att ha en relation istället för att utöka en tabell med fält, speciellt om fälten ändras ofta.
|
Japp, kände också det. Blir till att bygga om lite av admin-panelen :)
|
Det du beskriver nu kallas EV modellen, Entry-Value och är vanligt i databassammanhang när man vill kunna ha många egenskaper. Jag har en sådan tabell och den innehåller just nu 9 miljoner rader och det tar inte mer än ett par sekunder att gå igenom.
Om du ska ha olika fälttyper kan du fundera på om du ska ha en INT och en VARCHAR exempelvis för att optimera databasen. |
Aha, studiox. Det hade jag inte tänkt på. Det kan ju vara en smart grej med ett string_value- och en int_value-fält.
|
Citat:
|
Citat:
|
Citat:
|
Finns en tredje variant. "NoSQL". (http://en.wikipedia.org/wiki/NoSQL)
Och man kan köra NoSQL i en relationsdatabas om man så känner för det och där kan man skapa index för fälten också. Då blir relationsdatabasen mer en ren lagringsyta (förutom för indexena då). |
Citat:
|
Alla tider är GMT +2. Klockan är nu 01:47. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson