Kom ihåg mig?
Home Menu

Menu


Databasstruktur med "egna" fält

 
Ämnesverktyg Visningsalternativ
Oläst 2010-02-04, 20:01 #1
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Standard 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
name
type
extra_fields_data
Kod:
reservation_id
field_id
data

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.
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-04, 20:36 #2
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
HenSod HenSod är inte uppkopplad
Flitig postare
 
Reg.datum: May 2005
Inlägg: 484
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.
HenSod är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-04, 21:28 #3
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Japp, kände också det. Blir till att bygga om lite av admin-panelen
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-04, 22:40 #4
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
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.
studiox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-05, 16:31 #5
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
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.
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-05, 17:28 #6
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av qson Visa inlägg
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.
Större nytta skulle det göra att spara heltal/tal i en tabell och strängar i en annan. Att ha två fält i en värdetabell tror jag bara skulle göra skada förutom i specialfall (stort bearbetningsbehov av ints/floats över stort antal rader, olika indexeringsbehov beroende på variabeltyp osv).
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-05, 18:44 #7
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
Citat:
Ursprungligen postat av Clarence Visa inlägg
Större nytta skulle det göra att spara heltal/tal i en tabell och strängar i en annan. Att ha två fält i en värdetabell tror jag bara skulle göra skada förutom i specialfall (stort bearbetningsbehov av ints/floats över stort antal rader, olika indexeringsbehov beroende på variabeltyp osv).
Index sätter du ju på fält och inte tabell
studiox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-05, 19:03 #8
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Clarence Clarence är inte uppkopplad
Administratör
 
Reg.datum: Jan 2003
Inlägg: 1 974
Citat:
Ursprungligen postat av studiox Visa inlägg
Index sätter du ju på fält och inte tabell
Jag förstår inte riktigt hur du tolkade det så, men om jag var otydlig så var vad jag ville säga att om det fanns extra anledning att indexera antingen strängvärden eller heltalsvärden så skulle 2 kolumner i värdetabellen hjälpa då man kan välja indexera antingen strängvärden eller heltalsvärden i och med att de ligger i just skilda fält. Specialfall, som sagt.
Clarence är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-07, 15:18 #9
iXam iXam är inte uppkopplad
Medlem
 
Reg.datum: Aug 2005
Inlägg: 219
iXam iXam är inte uppkopplad
Medlem
 
Reg.datum: Aug 2005
Inlägg: 219
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å).
iXam är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-02-11, 13:09 #10
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Jonas Jonas är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Feb 2004
Inlägg: 3 364
Citat:
Ursprungligen postat av iXam Visa inlägg
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å).
Och ett webhotell som stödjer någon av dessa databas/metoderna.
Jonas är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 07:59.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017