Avatar billede SomTing Novice
13. april 2013 - 13:26 Der er 4 kommentarer og
1 løsning

PHP/MySQL - 1 tabel eller flere tabeller?

Hejsa,

Jeg har en hjemmeside som har 3 typer indhold på nuværende tidspunkt. Disse er delt op i 3 tabeller idet at der er forskellige kolonner. Problemet er egentlig at jeg nu har en masse arbejde med inner join, left join osv. osv. idet at mange af tabellerne skal vises "samlet". Eksempelvis hvis der står "nyeste indhold", så skal jeg koble alle 3 tabeller sammen og sortere dem efter timestamp.

Havde jeg nu haft 1 tabel var det én nem forespørgsel.

de 3 tabeller kan se sådan her ud:

T1:
spil_id
titel
beskrivelse
spil_link
timestamp
hits
billede

T2:
film_id
titel
beskrivelse
film_link
timestamp
hits
billede

T3:
artikel_id
titel
beskrivelse
tekst
timestamp
hits
billede

Skulle man koble dem alle sammen, så ville det måske se sådan her ud:

indholds_id
titel
beskrivelse
tekst
link
billede
thumbnail
type
timestamp
hits

Nu er overstående tabeller fiktive. Der er nogle flere felter i mine tabeller, men der hvor jeg vil hen er: Der vil i nogle tilfælde være 50% af felterne der står tomme. Vil det påvirke hastigheden på siden eller er det fuldstændig ligegyldigt?

Mit design og mine ønsker vil blive LANGT nemmere at programmere/lave hvis jeg kan have det hele i én tabel, men det kræver altså at hastigheden/performance osv. ikke påvirkes, eller det er så lidt at det er fuldstændig irrelevant.

Det samme med kommentarer.. Lige nu har jeg 3 kommentar tabeller, men der tænkte jeg at eftersom der er knap 50.000 kommentarer, så ville databasen blive belastet unødvendigt ift. 3 separate tabeller.

På forhånd - tak :)
Avatar billede thomas Praktikant
13. april 2013 - 15:54 #1
Jeg vil helt klart bruge en tabel til indhold med type som identifikation. Det er lidt lige meget om alle felter ikke bruges bare de optimeres i selve tabellen. Tænk på sider som facebook der du kan udfylde 100 forskellige felter og alle skal kontrolleres for data når siden vises. Nu bruger facebook ikke sql hvad jeg kan huske men tror godt du kan se min pointe.

Når det kommer til kommentarer bliver det også nemmere med indholdet i en tabel da du kun behøver en til kommentarer med link til hvad indhold den linker til.
Avatar billede arne_v Ekspert
14. april 2013 - 00:25 #2
Du har 3 entiteter med et paent overlat af attributter.

Det kan haandteres paa mange forskellige maader.

A)

T1, T2, T3 som du har idag

B)

Tcommon med foreningdmaengden af felter fra T1, T2, T3 og flittig brug af NULL som du overvejer.

C)

Tcommon med faellesmaengden af felter fra T1, T2, T3 og T1X, T2X, T3X med de specifikke felter.

D)

Tcommon med faellesmaengden af felter fra T1, T2, T3 plus et enkelt felt med XML som indeholder al den specifikke information.

E)

Tcommon med faellesmaengden af felter fra T1, T2, T3 og Tattribut med 3 felter id, name, value.

Det er svaert for os at vurdere hvad der er bedst for dig.

Umiddelbart udfra eksemplet ville jeg nok foele mig mest tiltrukket af A med C som bedste alternativ.
Avatar billede arne_v Ekspert
14. april 2013 - 00:27 #3
Jeg vil frarraade dig at lave 1:1 relationer med det formaal at forbedre det fysiske database design medmindre du virkeligt ved hvad du laver.
Avatar billede SomTing Novice
15. april 2013 - 20:40 #4
Mange tak for jeres svar! Kom med et svar, så får i points.
Avatar billede arne_v Ekspert
30. juli 2013 - 05:11 #5
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

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