Kom ihåg mig?
Home Menu

Menu


Databastabeller

Ämnesverktyg Visningsalternativ
Oläst 2005-05-29, 02:00 #1
redRemedys avatar
redRemedy redRemedy är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2004
Inlägg: 25
redRemedy redRemedy är inte uppkopplad
Nykomling
redRemedys avatar
 
Reg.datum: Dec 2004
Inlägg: 25
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.
redRemedy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-06-04, 22:55 #2
Nisse Nisse är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2003
Inlägg: 9
Nisse Nisse är inte uppkopplad
Nykomling
 
Reg.datum: Aug 2003
Inlägg: 9
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.
Nisse är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-06-05, 03:06 #3
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
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.
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-06-05, 12:43 #4
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
eg0master eg0master är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Oct 2004
Inlägg: 898
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.
eg0master är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-06-05, 13:20 #5
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
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?
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-06-07, 18:53 #6
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
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. =)
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-06-17, 10:52 #7
redRemedys avatar
redRemedy redRemedy är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2004
Inlägg: 25
redRemedy redRemedy är inte uppkopplad
Nykomling
redRemedys avatar
 
Reg.datum: Dec 2004
Inlägg: 25
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:
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?
Ja, för mig finns i princip inget alternativ, jag ser OO som det mest optimala att tänka i. Att dela upp ansvar och kategorisera olika typer av objekt som exempelvis 'persistenta' och 'transienta' objekt.

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:
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?).
Jag kan med hjälp av Meta-datan som finns för varje klass berätta för databastabellen vilken den optimala datatypen ska vara på varje fält i MySQL exempelvis. Och Jo, visst ändras tabellen ifall klassen ändras. (Dock bara via uppdateringsskript)

Citat:
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?
Vi har en hel del sparat i sessionen ($_SERVER['sApplication']->registry) med unika id-nummer knutna till sig, där ligger objekt som man för tillfället jobbar med. Snabbt och smärt.
Serialize arbetar vi inte alls med.

// Jonas
redRemedy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-06-17, 13:58 #8
Fluffe Fluffe är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2004
Inlägg: 44
Fluffe Fluffe är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2004
Inlägg: 44
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! Va? Märktes det?
Fluffe är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 02:21.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017