Avatar billede sanderg Nybegynder
26. maj 2010 - 11:37 Der er 5 kommentarer

Databasedesign til avancerer CMS-system

Hej alle,

Jeg er igang med et lidt større projekt - jeg vil udvikle et nyt CMS. Det bliver selvfølgelig OOP, bygget på MVC - faktisk bruger jeg Zend Framework. Jeg har tænkt mig at bygge det lidt ligesom: http://vimeo.com/7126991 .

Her er hvad jeg har fået lavet: http://ag-s.dk/Database.png

Jeg prøver altså at adskille de "core" admin ting, fra content, og modules. Modules ser jeg som ting man kan tilføje til sider. F.eks. et galleri, kommentarer, video, nyhedsbrev, osv.

Så har jeg lavet "Admin Modules" (admin_modules). Det ser jeg som at være modules, men på admin-delen. Det kan f.eks. være håndtere sider (oprette, redigere og slette sider), lave bookmarks til sig selv, skrive noter, og måske også lave et chatsystem mellem admins.

Ved dog ikke hvordan jeg skal strukturere alt dette, i min database. Kunne godt tænke mig, at når jeg skulle lave nye modules, skal jeg kun rette i den. Ikke noget med at pille ved nogle andre filer. Moduler skal faktisk virke, hvis man smider dem ned i /modules/ mappen. Så hvis jeg laver et nyhdedsmodul, og smider det ned i mappen (/modules/news/) skal det bare virke. Det store spørgsmål er bare, hvordan jeg skal designe databasen.

Skal jeg splitte tabellerne mere op? Hvordan kan det blive nemmere, at udvikle nye moduler? Strukturerer jeg mine moduler i databasen godt? Har gjort det sådan, når man laver et module, så bruger man faktisk "modules" tabellen. Hvis man så vælger, lad os sige text, så laver den en row i modules_text med ID'et fra modules - så de peger på hinanden. Ved ikke om jeg er på afveje.

I bund og grund er mit spørgsmål, hvordan man skal strukturere sin database, for store CMS'er, så man nemt kan udvikle moduler til det.
Avatar billede sanderg Nybegynder
26. maj 2010 - 15:10 #1
Alle ideer er velkomne. Tips/gode råd - I fyrer bare af. :)
Avatar billede webcreator Nybegynder
03. juni 2010 - 18:07 #2
Hej Sanderg.

Jeg vil ikke kommentere på dit E/R diagram, da jeg ikke lige orker at sætte mig ind i det nu. Jeg vil dog gerne give dig et par gode råd med på vejen.

Lav først en simpel udgave af CMS'et, og udvid det så over tid med mere avanceret funktionalitet. Du har gang i en avanceret rettighedsmodel med flere brugere og bruger-grupper. Jeg vil anbefale dig at starte med et single-user-system ligesom Sitemagic CMS. Du skal alligevel ikke regne med at dit system bliver brugt af Jyllandsposten eller lignende fra dag ét - dem der vil benytte dig system til at starte med, er sandsynligvis private og mindre virksomheder. Når du begynder at få mere fart under vingerne, kan du med hjælp fra kunderne få afdækket de nærmere behov. Ellers risikerer du at sidde og udvikle en masse funktionalitet, som brugerne/virksomhederne reelt ikke har brug for.

Hvad angår arkitekturen i dit CMS, så behøver databasen ikke nødvendigvis understøtte modulerne. I Sitemagic CMS overfører man bare et modul til systemet, og så er det installeret - så simpelt kan/bør det være. Modulerne kan så selv oprette de tabeller der er behov for.

Sitemagic CMS er lidt smart her, for det kan køre både med og uden en database. Hvis man ikke opsætter databasen (MySQL), så opretter det selv nogle XML filer, som fungerer som database. Overvej at genbruge denne ide, da det betyder at mange flere vil kunne installere og bruge dit system.

Nu skriver du også, at dit CMS skal fungere som i eksempel-videoen. Jeg vil råde dig til at finde et område hvor dit CMS skal adskille sig fra andres - har du gjort dig tanker om dét ?

Eksempelvis adskiller Sitemagic CMS sig ved:

- at være ekstremt nemt at installere og bruge
- at det er lavet til udviklere som nemt kan lave egne moduler
- designere nemt kan lave egne skabeloner
  (i øvrigt med fuld separation mellem layout og logik!)
- at være et meget light-weight CMS men med fuld skalerbarhed
- Kan køre både med og uden database
- Og meget mere :-)

Jeg håber du kan bruge disse råd til noget. Når du engang får bygget noget vi kan se, så vil jeg da utroligt gerne se det :-)

God fornøjelse med projektet
Avatar billede webcreator Nybegynder
03. juni 2010 - 18:08 #3
Forresten, hvis du vil kigge på Sitemagic CMS: http://sitemagic.dk
Avatar billede janus_007 Nybegynder
15. juli 2010 - 01:02 #4
Glem databasen til at starte med. Design først systemet, mock dine objekter op og bagefter laver du db'en.

Det er ganske normalt at bruge et key-value db-design når man har med CMS at gøre, eks: http://www.devshed.com/c/a/MySQL/Database-Design-Using-KeyValue-Tables/ , dvs. glem alt hvad du har lært om relationelle databaser og kolonnenavne :)

Datalaget bør kunne håndtere xml eller db, som webcreator siger (udemærket post forøvrigt), jeg er meget enig med ham omkring at starte op simpelt. Du kan altid udvide undervejs, husk unittests :)
Avatar billede sanderg Nybegynder
26. oktober 2011 - 22:29 #5
Takker :-) Smider I ikke lige nogle 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