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).
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.
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.
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.