> Någon får gärna berätta lite mer om fördelarna med views.
Antag att du vill lista ditt "hemmalager", utan views skulle det kunna se
ut ungefär så här (otestad kod !) :
Kod: Markera allt
select
hemlager.hemlager_nr,
hemlager.antal,
levlager.levlager_nr,
levlager.value,
levlager.artnr,
komptyp.beskrivning,
lev.namn
from
hemnlager, levlager, komptyp, lev
where
hemlager.levlager_nr = levlager.levlager_nr AND
levlager.komptyp_nr = komptyp.komptyp_nr AND
levlager.lev_nr = lev.lev_nr
order by <någonting>
Detta får du alltså skriva i din PHP kod *varje gång* du
söker från ditt "hemlager" !!
Om du istället först gör (i databasen, i förväg) :
Kod: Markera allt
create view hemlager_view as
select
hemlager.hemlager_nr,
hemlager.antal,
levlager.levlager_nr,
levlager.value,
levlager.artnr,
komptyp.beskrivning,
lev.namn
from
hemnlager, levlager, komptyp, lev
where
hemlager.levlager_nr = levlager.levlager_nr AND
levlager.komptyp_nr = komptyp.komptyp_nr AND
levlager.lev_nr = lev.lev_nr
order by <någonting>
så räcker det med att från PHP göra :
Finessen är alltså att "Create view" gör du *EN* gång, medan
"select ... from hemlager_view" gör du så mycket du vill...
Blev det klart ?
Som du ser kan du (inom rimliga gränser) även ändra den fysiska
tabell designen t.ex lägga till något mer, justera "hemlager_view" och
(i bästa fall) inte behöva göra några (större) ändringar i koden.
Notera också att mitt exempel inte är helt bra, man ska nornalt aldrig
använda "select stjärna" i kod, det blir latenta buggar och det försvårar
framtida underhåll av databasen. Om det är en view man kör mot,
kan det dock vara OK, man kan ju lägga till fält i tabellerna utan att
ändra vyn och på så sätt ger "select *" från vyn fortfarande samma resultat...
oJsan:
> Kopplingen mellan "levlager.värde" och "komptyp.beskrivning" kan bli ett frågetecken[...]
> Kopplingen sker med "levlager.komptyp_nr" mot "komptyp.komptyp_nr"
> ...eller förstod jag inte frågan riktigt?
Nja, det var mer frågan om vad som ska in i fältet "värde" resp "beskrivning".
Det är inte solklart för alla komptyper vad som är vad...

*Kopplingen* mellan tabellerna är dock inget problem...