Avatar billede Slettet bruger
26. april 2010 - 14:58 Der er 5 kommentarer og
2 løsninger

Mange små tabeller eller én stor?

Dette er et mere generelt spørgsmål til opbygning af en database.

Skal jeg lave flere små "logiske" tabeller, eller nøjes med få store? For eksempel til en community hjemmeside:

tabel status_kommentarer
tabel foto_kommentarer
tabel video_kommentarer

Eller bare:

tabel kommentarer

De kloge siger at de korrekte indexes gør hele forskellen, men jeg oplever stadig altid, at små tabeller er betydelig hurtigere end en stor. Gør jeg noget forkert? (jeg er ikke mysql nybegynder, og jeg kender (tror jeg da) alt til indexes).
Avatar billede arne_v Ekspert
26. april 2010 - 15:15 #1
Du skal op paa meget store databaser for at det er bedst at splitte op.

Standard raadet er stadig en enkelt stor tabel.

Hvis du har performance problemer saa post tabel og index struktur plus de langsomme queries og saa kigger vi paa det.
Avatar billede public2 Nybegynder
26. april 2010 - 20:36 #2
Jeg vil mene at opbygningen er case-by-case, men jeg bruger flere guidelines når jeg laver mine databaser.

De tre første normalformer er en god tommelfingerregel, og der må ikke være redundans i din database.

Derudover kan du lave E/R diagrammer for at se om dine relationsships giver mening og om det f.eks. er en mange-til-mange relation eller en en-til-mange relation. Alt dette har en indflydelse, i hvert fald i min mening og mine opbygninger.

Men omkring din sag om kommentar, der kan man forestille sig at du kun behøver én tabel, men så angiver i en enum (eller andet) om kommentaren hører til den ene eller anden entitet.

Og så ja, index har stor indflydelse, men de kan også have en lige så dårlig indflydelse. Det er utroligt vigtigt at du skaber og laver dine index korrekt og ikke bare bruger dem hip som hap og på må og få. Du skal tænke dig om når du laver index og du skal tænke over hvilken type index du vil lave, hvis det er til meget store tabeller.
Avatar billede danco Nybegynder
01. maj 2010 - 16:22 #3
Jeg synes måske også det er meget relevant at overveje hvilken Host du har til din database, og hvilke engines du har mulighed for at benytte.
Jeg ville nok sige at det giver mest mening at splitte op, hvis du har mulighed for InnoDB, hvorimod det giver mere mening at holde til en stor tabel hvis du kun har MyISAM.

Grunden til jeg siger dette er naturligvis at du har muligheden for fremmednøgler i InnoDB. Naturligvis kan programmeres til at give samme resultat med de 2 engines. Men det synes jeg ikke der er nogen grund til.
jeg vil også sige at det altid er en forhold at normalisere til mindst 3. normalform. Og synes jeg nok at ER diagrammet er lidt tamt, der ville jeg foretrække EER diagrammet.

Jeg håber du kan bruge noget af det her.
Avatar billede arne_v Ekspert
13. juni 2010 - 04:31 #4
netomia?
Avatar billede Slettet bruger
14. juni 2010 - 14:37 #5
Tak for kommentarer. Dem som vil have point, skriv et svar.
Avatar billede arne_v Ekspert
14. juni 2010 - 14:52 #6
svar

og vi kan vel dele
Avatar billede public2 Nybegynder
17. juni 2010 - 09:56 #7
Hvorfor ikke... svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester