|
| Views, Hvorfor? Fra : Jimmy |
Dato : 06-09-03 19:31 |
|
Hej
Er i gang med at læse en bog der berører SQL-Server. Bogen udtrykker ikke
den helt store begejstring for Views, da Views alligevel kigger i de
oprindelige tabeller. Dog skriver bogen at Views kan gøre visse
forespørgsler nemmere, men påpeger egentligt at den eneste fordel er ved et
flerbruger system hvor man så kan adskille data lidt ved hjælp af Views.
Am i missing the big picture here, eller er views overhovedet brugbare i
dag?
Jeg sidder som regel i forbindelse med Web, og det er derfor ofte den samme
bruger der accesser databasen i connectstrengen. Er der så overhovedet nogen
grund til at tænke på Views?
Jeg kan simpelthen bare ikke forstå at man laver Views når det overhovedet
ikke er en god ide at bruge dem.
Håber der er nogen der kan kaste lidt lys over sagen?
--
Jimmy
| |
Peter Lykkegaard (06-09-2003)
| Kommentar Fra : Peter Lykkegaard |
Dato : 06-09-03 19:53 |
| | |
Peter Brodersen (06-09-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 06-09-03 20:31 |
|
On Sat, 6 Sep 2003 20:31:29 +0200, "Jimmy"
<pleasereplyingroup@hotmail.com> wrote:
>Jeg kan simpelthen bare ikke forstå at man laver Views når det overhovedet
>ikke er en god ide at bruge dem.
(jeg ser her bort fra stored procedures)
Om noget er "godt" eller "dårligt" kan måles af flere akser. Fx
performance, funktionalitet, abstraktion, etc. Ofte vil man kunne lave
et tradeoff imellem disse.
I forbindelse med web kan der være god mening i forhold til
abstraktionen. Lad os sige, du har en tabel med fx nyheder på
websiden. En del nyheder redigeres internt, før de markeres med et
"offentlig"-flag, og lægges online. Her kunne man passende lave et
view, der sikrede, at enhver database-relateret funktion på websiden
altid vil bruge et view, der er begrænset til at vise de offentlige
artikler - i stedet for at ende med et par hundrede forskellige
queries, der alle har en tilføjelse i stil med
"... AND offentlig = 1".
Den dag, man ændrer funktionaliteten (fx i stedet indfører en start-
og slut-offentlig-dato, som nuværende dato skal holde sig indenfor),
er det også langt lettere blot at rette view'et til, end de føromtalte
mange queries.
Et andet eksempel kunne være, at selv et tilsyneladende simpelt udtræk
(fx "Jeg vil have informationer om alle vores medarbejdere") skal lave
opslag i en 6-7 tabeller (fx join på en postnummer-tabel, join på en
afdelingsnavn-tabel, etc.), så vil man igen gerne simplificere ens
forespørgsler på websiden, så man kan nøjes med at lave et opslag på
ét view, med fx én simpel WHERE-restriction, fx:
"SELECT whatnot FROM MedarbejderView WHERE postnr = 4000"
... i stedet for at man for hver enkel variant af et medarbejderopslag
skal igennem den samme, store join.
--
- Peter Brodersen
Ugens sprogtip: yndlings- (og ikke ynglings-)
| |
Ole Nielsby (06-09-2003)
| Kommentar Fra : Ole Nielsby |
Dato : 06-09-03 20:56 |
|
Jimmy <pleasereplyingroup@hotmail.com> skrev:
> Er i gang med at læse en bog der berører SQL-Server. Bogen
> udtrykker ikke den helt store begejstring for Views, da Views
> alligevel kigger i de oprindelige tabeller. Dog skriver bogen at
> Views kan gøre visse forespørgsler nemmere, men påpeger
> egentligt at den eneste fordel er ved et flerbruger system hvor
> man så kan adskille data lidt ved hjælp af Views.
>
> Am i missing the big picture here, eller er views overhovedet
> brugbare i dag?
Views er ganske brugbare - for ikke at sige uundværlige - når mange
personer er involveret i design og vedligeholdelse af en database som
bruges af mange programmer eller programmoduler.
Hvis en del af databasen viser sig at være uhensigtsmæssigt struktureret
og skal laves om, er det en stor fordel at de applikationer der bruger
databasen, arbejder gennem views. Så er det tilstrækkeligt at lave
disse views om så de fungerer med den nye struktur.
ON/Fjern sneglen fra min svaradresse
| |
Lars Dybdahl (06-09-2003)
| Kommentar Fra : Lars Dybdahl |
Dato : 06-09-03 22:25 |
|
Jimmy wrote:
> Er i gang med at læse en bog der berører SQL-Server.
Hvilken en af dem? FirebirdSQL Server? Microsoft SQL Server? Oracle? DB/2?
MySQL server? PostgreSQL server?
> Bogen udtrykker ikke
> den helt store begejstring for Views, da Views alligevel kigger i de
> oprindelige tabeller.
Views bruges normalt til at styre brugerrettigheder med. Man kan f.eks. lave
et view på en personliste, der gør den anonymiseret, uden navne og
CPR-numre, og så give nogle personer adgang til dette view, uden at de har
adgang til navne og CPR-Numre.
> Jeg sidder som regel i forbindelse med Web, og det er derfor ofte den
> samme bruger der accesser databasen i connectstrengen. Er der så
> overhovedet nogen grund til at tænke på Views?
Ja. Du kan give en webserver adgang til udvalgte data vha. et view uden at
webserveren har læserettighed (select rettigheder) til alle data.
Jeg har også brugt views i forbindelse med noget software, som skulle lave
en forespørgsel ned i en PostgreSQL database, som sandsynligvis ændrer
format løbende. Her bruger jeg et view til at sikre, at denne eksterne
software altid kun skal tilgå et view, og ikke skal tilpasse sig de
strukturændringer, der kommer i databasen.
Lars.
--
Freelance programmør
| |
Jens Gyldenkærne Cla~ (06-09-2003)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 06-09-03 22:21 |
|
Jimmy skrev:
> Er i gang med at læse en bog der berører SQL-Server.
Hvilken bog er det?
> Am i missing the big picture here, eller er views overhovedet
> brugbare i dag?
Til de (ganske vægtige) argumenter der allerede er anført, vil jeg
tilføje at views også kan bruges til administration af rettigheder.
Nogle felter må måske ikke læses af alle brugere - disse brugere
kan få fjernet muligheden for at tilgå tabellen direkte, men stadig
tilgå et view med passende feltnavne.
> Jeg sidder som regel i forbindelse med Web, og det er derfor
> ofte den samme bruger der accesser databasen i
> connectstrengen. Er der så overhovedet nogen grund til at
> tænke på Views?
Afgjort. Ved at bruge views kan du holde selve tabelopbygningen ude
af din webapplikation. Hvis du på et tidspunkt må ændre noget i
strukturen er det lettere at tilrette views end at skulle finde
alle de eksterne sql-kald der er berørt af ændringen.
> Jeg kan simpelthen bare ikke forstå at man laver Views når det
> overhovedet ikke er en god ide at bruge dem.
Jeg har svært ved at se at det skulle være en dårlig ide at benytte
views. Det kan i visse tilfælde nok være unødvendigt - men det
skader ikke at bruge dem.
--
Jens Gyldenkærne Clausen
Velkommen hen til Paris International!
Rejse, lede og fortolkere. Jeres oven på- kø levere i Paris
nemlig... (< http://www.paris-tours-guides.com/index_danish.shtml>)
| |
Jimmy (07-09-2003)
| Kommentar Fra : Jimmy |
Dato : 07-09-03 10:40 |
|
Hej
Jeg takker for de svar jeg har fået. Har helt sikkert ændret lidt syn på
det, og kan godt se den røde tråd i det nu.
Kan godt anbefale de links Peter L. gav. Har selv bookmarked den side, og
den vil helt sikkert blive brugt flittigt :)
--
Jimmy
| |
Peter Lykkegaard (07-09-2003)
| Kommentar Fra : Peter Lykkegaard |
Dato : 07-09-03 10:50 |
|
Jimmy wrote:
> Kan godt anbefale de links Peter L. gav. Har selv bookmarked den
> side, og den vil helt sikkert blive brugt flittigt :)
Hæ, jeg fik kaffen galt i halsen da jeg selv læste det i forb med dit
spørgsmål
Btw så har fundet ud af der er betydelig performance forskelle om du bruger
Command objectet sammen med persistent kontra den flittigt brugte
Openrecordset
Hvis du vil diskutere det nærmere så skal vi nok over i en af
programmeringsgrupperne
mvh/Peter Lykkegaard
| |
Jimmy (12-09-2003)
| Kommentar Fra : Jimmy |
Dato : 12-09-03 10:00 |
|
"Peter Lykkegaard" <polonline@hotmail.dk> skrev i en meddelelse
news:3f5b0021$0$32467$edfadb0f@dread16.news.tele.dk...
> Jimmy wrote:
>
> Hvis du vil diskutere det nærmere så skal vi nok over i en af
> programmeringsgrupperne
Ja, jeg blev nødt til lige at starte tråden derovre, hehe...
| |
|
|