FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Nykomling
|
Det var en intresant diskussion i en tråd längre ner som var och nosade på vad jag ville ta upp, men den var placerad i fel tråd så jag gör ett nytt försök till att ta upp diskussionen hit istället.
Jag skulle vilja veta hur ni tänker när ni designar databasen som ni kopplar till sidan. Alla tänker vi ju olika och det skulle vara intressant att veta hur andra gör. Själv tycker man ju alltid att man gör bäst själv. Så här är chansen att ge tips till andra eller få idéer från andra. Såhär gör jag: Domäner Eftersom jag jobbar 100% objektorienterat(i PHP) har varje persistent klass en motsvarande tabell i databasen. Så fort jag skapar en ny klass skapar mitt ramverk en tabell i databasen där varje kolumn får namnet från sitt motsvarande attribut och datatyp efter attributets metadata. Samlingar En samling av objekt representerar jag som ett id-nummer som reffererar till en samlingstabell. En samlingstabell reffererar till sin ägare (tabellen som äger/reffererar samlingen) via ett idnummer. En tabell som motsvarar objekten i samlingen skapas också med en referens till samlingstabellen och en referens till det faktiska objektet som ingår i samlingen. När jag kollar runt lite bland bekanta hur de har löst dessa bitar börjar jag misstänka att jag är ensam om denna modell, skulle vara intressant hur ni andra gör. |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Nykomling
|
Gör på samma sätt fast i Java. Har dock inget sätt att automatiskt generera tabellerna i databasen (brukar modellera databasen först) skulle dock vara snyggt och generera alla "bönorna" autom. för en ny tabell.
|
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Klarade millennium-buggen
|
Oj, det där låter intressant redRemedy.. :)
Jag brukar helt enkelt modellera databasen först (brukar bli ett par tillägg allt eftersom projektet framskrider), men i princip finns det en färdig bas när man kodar. Det är enklare att utgå från en databas än tvärtom tycker jag. Använder rätt sällan klassfunktionerna i PHP eftersom jag inte tycker det är särskilt nödvändigt, det blir dock en del klasser när det är uppenbart praktiskt (dvs när man vill representera något mer komplicerat än en array/hash). Jag sitter en _hel_ del rätt i mysqls prompt och meckar, jag är rätt väl förtrogen med create table/alter table och dess kusiner vilket gör att det blir rätt effektivt att utveckla på det sättet. Är dock imponerad av att du har ett "ramverk" för att automatiskt skapa tabeller.. heh. |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Mycket flitig postare
|
Dax att kasta sig in i debatten...
Jag låter projektet styra (och nu snackar vi inte bara "webprojekt" utan även andra typer av applikationer). I vissa fall är det lämpligt med en mappning objekttyp = tabell, medans det i andra är olämpligt främst för att en annan struktur gör att databasen blir effektivare. Jag låter helt enkelt den representation som finns i databasen vara optimerad för databasen och låter representation av objekt i applikationen vara optimerad för att jag (och andra utvecklare) så lätt som möjligt skall kunna arbeta med objekten oavsett hur de representeras i databasen. Sällan är världen svart eller vit... En kommentar dock till redremedy - det känns som om din representation av "samlingar" är aningen överarbetad. Sannolikt är det en effekt av att du automatiskt vill skapa tabeller för dina objekt och på det sättet har du skapat en representation i databasen som inte är optimerad i största möjliga mån. Respektive lager i applikationen (data/logik/presentation) blir trevligast att jobba med om respektive lager är optimerat för det respektive lager skall göra. Inte genom att ha samma representation genom alla lager. Men som jag sa är inget svart eller vitt - för stora skillnader gör ju att när data skall passera från ett lager till ett annat blir det orimligt mycket jobb att skicka datat, men min grundprincip kvarstår; jag gör på det sättet som är bäst för situationen och inte på ett och samma sätt varje gång. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Klarade millennium-buggen
|
Men jag måste bara fråga, när är det ni som kör riktigt tung objektorientering känner att ni får nytta av detta i samband med webbutveckling främst?
Vart är det ni kan dra nytta av en klass automatiskt skapar en tabell baserat på sitt innehåll (jag antar att den inte även ändras beroende på hur klassen förändras?). Slutligen, hur hanterar ni att det blir en del extra overhead när man skapar klasser och objekt i PHP? Sparar ni objekten med serialise mellan anrop? |
||
![]() |
![]() |
![]() |
#6 | |||
|
||||
Klarade millennium-buggen
|
Med det ramverk jag sitter och jobbar i/med nu (inte jag som har gjort det) så fungerar det tvärtom: klasser skapas med en generator utefter vilka tabeller som finns i databasen. =)
|
|||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Nykomling
|
Det var ett tag sedan jag var inne i denna diskussion, ´så jag hoppas att alla inte på semester när jag får chans att "försvara" min metod!
![]() Citat:
När jag bygger skiljer jag även logik från GUI vilket gör att jag kan lägga vilket GUI-objekt somhelst på ett logikobjekt(Domänobjekt). Altså... eftersom jag inte är sådär rackarns bra på design och grafik kan jag lägga ut jobbet på någon annan som får programmera GUI´t paralellt. Mitt långa svar på din korta fråga är väl att jag inte ser nån direkt fördel just för webprogrammering med OO utan för all typ av utveckling. Får erkänna att OO ibland är lite för resurskrävande tyvärr, men det hade det inte varit Ifall Smalltalk-killarna på 70-talet hade lyckats övertyga Intel att bygga annorlunda processorer med bl.a inbyggt VM ![]() Citat:
Citat:
Serialize arbetar vi inte alls med. // Jonas |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Nykomling
|
Nu förstod jag inte riktigt hur du gjorde rad, men fick känslan av att du skapar någon form av objektorienterade databas. Det har funnits med ett tag. var ganska hett i slutet av 90-talet.
Problemet med dem är att det är väldigt svårt att undvika trädstruktur på lagringen. (objekt ärver till objekt osv.). Detta sättet av lagring har säkerligen sin nisch, men det är inte ett givet sätt att lagra data på bara för att man utvecklar objektorienterat. Själv är jag en trogen anhängare till relationsdatabasen! ![]() |
||
![]() |
![]() |
Svara |
|
|