Avatar billede gg Praktikant
10. april 2002 - 11:57 Der er 4 kommentarer og
3 løsninger

SQL Server - relationer hvorfor

Hvorfor er det lige at jeg skal lave relationer i min sql server. F.eks har jeg en tabel der hedder:
JNavn:
JnavnID: primær nøgle

og en der hedder:

JScore:
JnavnID: fremmed nøgle

Teorien forskriver at sådan kan det gøres, men rent praktisk hvordan bruges disse relationer ? og hvorfor skal de bruges. Kan da løse problemet med SQL uden at have relationer i databasen. Normalt bruger jeg ikke relattioner.
Avatar billede ocp Nybegynder
10. april 2002 - 12:01 #1
Det bruges af optimizeren og forhindrer at invalide data bliver lagt ind, f.eks. at du ikke lægger et postnummer ind i en adresse uden postnummeret findes i en postnummer-tabel.
Avatar billede gg Praktikant
10. april 2002 - 12:41 #2
kan godt se logikken, men tjekeks der så inden der lægges i databasen og postnummeret findes ?. dvs man laver en select inden man update/insert ?
Avatar billede ocp Nybegynder
10. april 2002 - 12:45 #3
Tja... der laves vel en slags "skjult" select - du får i hvert fald en fejlkode hvis du prøver at indsætte en værdi der ikke kan relateres til den anden tabel. Det koster lidt performance, men man kan jo bare slå relationerne fra når man er færdig med at udvikle sin applikation og ved at alt fungerer efter hensigten.
Avatar billede danielfrost Nybegynder
10. april 2002 - 15:06 #4
Du kan ikke undgå at lave relationer hvis du laver WebApplikationer.

Relationer gør det nemmere for dig at kode op imod din database fordi du har den mulighed at lave views og i de views kan du udbygge din egen SQL så du ikke skal gøre det i scriptkoden...dette kan spare dig massere af tid fordi du ikke skal lave JOINS, og andet advanceret SQL!!!

Håber det hjalp lidt.

/Daniel
Avatar billede tmceu Praktikant
10. april 2002 - 16:35 #5
I en multi-tier applikation, er det vigtigt at de enkelte "lag" (tiers), eks. database- og applikationslaget udfører de rigtige opgaver, for at sikre en robust- og skalérbar applikation.

Du kunne godt vælge at lade al logik ligge i din applikation og blot lave en "dum" database uden keys, indexes o.s.v. men den holder altså ikke.

Der findes på SQL Server en række mekanismer (constraints) til at sikre konsistente data. Fremmednøgler er én af de mekanismer, på linie med eks. primary key, NOT NULL og CHECK.

En fremmednøgle er altså en måde at sikre konsistente data, mere end det er en måde at lave nemmere views eller noget du kan bruge mens du udvikler din applikation.

Prøv at søg i Books Online efter constraints og foreign keys.

Kig evt. også på http://www.15seconds.com/issue/011023.htm som beskriver n-tier løsninger.
Avatar billede terry Ekspert
10. april 2002 - 18:39 #7
http://www.computerworld.com/cwi/story/0,1199,NAV47_STO55918,00.html
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