09. december 2005 - 11:11Der er
8 kommentarer og 4 løsninger
Opbygning af database
Hej
Jeg er ved at prøve mig med et større community site, og har brug for lidt gode råd omkring opbygningen at min database. Kort beskrevet er sitet et antal mindre databaser (tabeller) med forskellige emneområder (artikler, opgaver, jobbank, kommentarer mm.). Der er 3 forskellige brugere med forskellige rettigheder (studerende, institutioner og nogle admins).
Bør jeg have én mega tabel hvor ALLE indlæg gemmes, både artiker og kommentarer. Hvordan laver man så relationer mellem f.eks en artikel og de rigtige kommentarer? Man skal måske give alle indlæg et felt med type, og så gemme en artikels id hos kommentarene. Har læst mig til at dette vil give en STOR men hurtig database. kan dog ikke helt gennemskue hvordan man så skal bygge hver enkelt side (emne) op.
Eller bør jeg have én tabel til hvert emne. Dette hænger bedre sammen i mit hoved, og jeg kan se hvordan siderne bør sættes op. Men har læst og hørt at det ikke er så effektivt?
Sådan understøtter du en datadreven kultur, som skaber værdi i din virksomhed.
7. maj 2024
Slettet bruger
09. december 2005 - 11:26#1
Der er sikkert forskellige meninger om hvad man bør gøre, men det mest rigtige efter min mening er at skille det lidt op, så er det nemmere at overskue og styrer.
Så du skal have en tabel med artikler og knytte kommentarer til artiklen ved at koble de to tabeller sammen. så der i kommentar tabellen er en henvisning til hvilken artikel den tilhører.
Du kan jo sagtens kun nøjes med en kommentar tabel, der så kan indeholde kommenatrer til artikler, opgvaer og andre du ellers vil have kommentarer tilknyttet til. Så skal du bare have et felt i kommentar tabellen der henviser til om det er en srtikel eller opgave.
Synes godt om
Slettet bruger
09. december 2005 - 11:28#2
Ved ikke om jeg har forklaret mig godt nok, men du skal have en database med tabellerne i og så knytte dem sammen som du egentlig selv har skrevet.
Du bør så have flere tabeller i den ene database der så linker til hinanden.
Kan komme med et indspark omkring brugerdelen: Selvom du kun har 3 brugergrupper, kan det godt svare sig at tænke lidt længere. Du laver en tabel med brugeroplysninger. (eks. navn/brugernavn/brugerid = Peter Hansen/peha/1 Du laver en tabel med rettigheder til forskellige områder. (eks. gruppeid/navn/beskrivelse = 1/edit_news/Brugeren kan editere rettigheder) Du laver en tabel der angiver brugerens rettigheder, eller sagt på en anden måde, du laver en tabel der angiver hvilke grupper en bruger er medlem af. (eks. brugerid/gruppeid = 1/1).
På siderne checker du så om brugeren er medlem af gruppen, for at vedkommende må se noget, eller rette i noget.
Fordelen er at du altid kan udvide dit system, hvilket vil være ret træls hvis du har bygget det hele op omkring 3 niveauer.
Ja domas, det lyder godt og enkelt. Ville du så have et type felt i artikel-opgave-job tabellen til at hente det rigtige ind? f.eks select alle fra <tabel navn> hvor type=1
Og lige et sniger spørgsmål. Hvis man nu på f.eks artikel oversigten vil vise hvor mange kommentarer der er til en given artikel, altså skrive i bunden "Kommentarer (42)" ved hver artikel...bliver det så for langsommeligt når man hele tiden skal kigge hvor mange gange en artikel id optræder i kommentar tabellen. Ved intet om hvor hurtigt sådan noget går.
domas smid også svar, så deler i :P har fået en go ide af opbygningen nu.
Tak for hjælpen.
Synes godt om
Slettet bruger
12. december 2005 - 21:42#10
Hvis du laver en count og du are skal tælle hvor mange gange det enkelte id optræder går det rimelig hurtigt, det skulle ikke "stresse" din aplikation.
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.