webForumDet fria alternativet

Databasstruktur

Webbutveckling

8 svar · 665 visningar · startad av i-or

Medlem sedan nov. 2001294 inlägg
Frågan#1

Jag antar att det är bättre att ha flera små tabeller än en stor. Rätta mig om jag har fel.

Men hur mycket bättre är det?
Om jag t ex har tre fält i en tabell som har samma fälttyp ska jag då lägga dessa fält i en egen tabell?
Den tabellen får då fyra fält, en primärnyckel, ett fält som är kopplad till modertabellen, ett fält med namnet och ett fält med värdena.

Hur mycket tjänar man på att dra ner på textlängden på fälten? Om de tre fälten med samma fälttyp har längderna 2, 10 och 50, lönar de sig då att lägga dessa i en ny tabell?

Det vore jätteschysst om någon kunde förklara för mig var gränsen går.

Tack på förhand

Medlem sedan feb. 200112 078 inlägg
#2

Det du beskriver kan väl närmast förklaras som relationstabeller, vilket troligtvis är att föredra i de flesta applikationer. Däremot finns det ju horribla exempel på att vissa överbrukar det och får fyrahundrasjuttiofem olika tabeller med enbart siffervärden i och som gör att nån annan utveklare får strul med att förstå själva relationerna.

Jag brukar gå efter regeln att göra det så att det är smidigt för mig och en eventuell efterträdare.

Förövrigt så flyttas tråden. ;)

Medlem sedan jan. 20022 440 inlägg
#3

Det finns egentligen ingen prestanda att vinna på flera små tabeller såvida du inte använder dig av stored procedures.

Jag märker iaf ingen skillnad, jag brukar ha som regel att inte ha mer kolumner i access än att jag kan se allihop utan att behöva rulla i sidled :e

Medlem sedan nov. 2001294 inlägg
#4

Vad är stored procedures?

Medlem sedan juli 200012 978 inlägg
#5

Lagrade procedurer som gör en sammanställning enligt format!

Tillbaka till din grundfrågeställning.
Varje tabell skall kunna lagar vad som behövs för att identifiera en sak.
En kund tillexempel. Borde ha en tabell med namn kundnummer och lite olika data En tabell knyten till kundnummer skulle sedan kunna innehålla adresser, en post för varje typ av adress eller tidsperiod. Samma sak med telefonnummer.
Nu blir det ofta opraktiskt så därför gör man en DeNormalisering.
Istället blir det tid som särskiljer data till olika tabeller!
Blev det lite klarare? Alltså varje registreringstillfälle styr vad som skall lagras.

Medlem sedan nov. 2001294 inlägg
#6

Låt mig ta ett exempel så får ni avgöra om jag ska dela upp tabellen eller inte.

Jag har en tabell med information om användarna och den har så mycket som 23 kolumner, uppdelade på:

1 räknare
4 ja/nej-fält
11 text-fält (4-100 tecken)
2 tid-fält
4 pm-fält
1 tal-fält

Ska jag dela denna tabell? I så fall, hur?

Medlem sedan dec. 200012 464 inlägg
#7

Det beror helt på vad det är för data du lagrar. Har innehållet i alla icke primärnyckelskolumner en 1-1 relation med primärnyckelskolumnerna så är det helt ok att dom ligger i samma tabell, annars inte.

Medlem sedan juli 200012 978 inlägg
#8

Det beror på tiden för uppgiftslämnandet.
Om alla fält kan fyllas i på en gång och inte skall ändras med historikuppföljning är det en tabell.
Dom 11 fälten vad är det? Förstod du Primärnyckelbegreppet?

Medlem sedan nov. 2001294 inlägg
#9

20 av fälten ändras bara när en ny användare läggs till och när användaren uppdaterar sin information.

De övriga tre fälten (1 ja/nej-fält och 2 tidfält) uppdateras ofta. Ska jag lägga dessa i en annan tabell?

Lasp, du hade rätt, jag förstod inte primärnyckelbegreppet? Förklara det gärna närmare.

De 11 fälten är av typen varchar, fyllda med helt vanlig text.

255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)