Avatar billede stig3 Mester
15. oktober 2002 - 15:40 Der er 13 kommentarer og
3 løsninger

Normalisering - cirkulær reference

Jeg har et program der ud fra en designer bla. genererer en database. Denne database forsøger jeg så at kontrollere for fejl (bla om NF'erne er overholdt).

Det er efterhånden noget tid siden jeg havde om normalisering, men jeg mener at kunne huske at der var en regel med at der ikke må være cirkulær reference i db'er.

Så er spørgsmålet:
1.
Er der nogen der kan huske hvilken NF det er. Jeg har prøvet at kigge dem igennem, men er ikke blevet ret meget klogere.

2.
Er der nogen der kan give et eksempel på et design, hvor den cirkulære reference opstår.

3.
Dette er designet som programmet lavede:
http://www.it-c.dk/~stigjensen/4NF.bmp
Er der nogen cirkulær reference i det, hvorfor/hvorfor ikke.
Avatar billede galaxy Nybegynder
15. oktober 2002 - 16:36 #1
Her burde du finde svar på dit spørgsmål. Efterhånden et godt stykke tid siden jeg selv har rodet med normalisering ;-)

http://www.sqlmag.com/Articles/Index.cfm?ArticleID=5448
Avatar billede stig3 Mester
15. oktober 2002 - 16:48 #2
Det ser umiddelbart sådan ud. Jeg kigger på det i morgen.

Har du eller andre nogen kommentar til billedet jeg henviste til ?
Avatar billede galaxy Nybegynder
15. oktober 2002 - 17:23 #3
kigger måske på det senere
Avatar billede lasse_buck Nybegynder
15. oktober 2002 - 18:02 #4
Stig3 >> Ved at se på nøglernes retning i figuren kan du se, at TeacherList refererer til rækker i tabellen Teacher. TeacherList refererer også til tabellen Course (se nøglen som en pil).

Der er ingen cirkulære referencer i dit ekspempel. En cirkulær reference ville være, hvis du kunne gå i relationernes retning og nå tilbage til samme tabel, som var udgangspunkt.
Avatar billede lasse_buck Nybegynder
15. oktober 2002 - 18:07 #5
Et TÆNKT eksempel på en cirkulær reference:
Tre tabeller hus, person og bil.
Hvert række i hus refererer til en person, som er ejer.
Hver  række i person refererer til en bil, som transportmiddel.
Hver  bil referer til hus, som garage.
huset ejes af personen, som ejer bilen, som er parkeret ved huset, som ejes af personen, som ejer bilen, som...
Avatar billede lasse_buck Nybegynder
15. oktober 2002 - 18:22 #6
Avatar billede stig3 Mester
15. oktober 2002 - 19:05 #7
Kan du huske hvilken normalform det er.... ?
Avatar billede stig3 Mester
15. oktober 2002 - 19:25 #8
Prøv at se her:
http://www.it-c.dk/courses/DBS/F2000/ITU_Week10_files/slides_uge10.pdf

På de sidste to slides forklares BCNF. Det ligner noget med cirkulær reference, men er det den jeg leder efter tror i ?

Og, er det rigtigt at det medfører redundans og hvorfor ?
Avatar billede stig3 Mester
16. oktober 2002 - 11:01 #9
Efter at have læst lidt mere på det er jeg blevet i tvivl.

Er der overhovet nogen af normalformerne, der forbyder en cirkulær reference ??

Som jeg læser BCNF er det ikke en cirkulær reference mellem tabelerne, der er problemet, men derimod en cirkulær reference af "nøgler" inde i een tabel........
Avatar billede stig3 Mester
18. oktober 2002 - 13:54 #10
Lasse >>

Ved du om dit eksempel på cirkulær reference overtræder nogen NF og i givet fald hvilken ?
Avatar billede lasse_buck Nybegynder
18. oktober 2002 - 14:11 #11
stig3 >> Nej, det ved jeg ikke. Teorien sidder ikke på fingerspidserne. Men en cirkulær reference er vel en transitiv afhængighed af en nøgle i samme tabel.
Avatar billede stig3 Mester
18. oktober 2002 - 14:24 #12
Det forstod jeg ikke helt.

.. i samme tabel ....
I eksemplet er der jo ingen cirkulær reference inden for nogen af tabellerne.

eller misforstod jeg ?
Avatar billede lasse_buck Nybegynder
18. oktober 2002 - 14:51 #13
Prøv lige at læse mit eksempel igen :o)
Tre tabeller...

Primærnøgler:
HUS.MATRIKELNR
PERSON.CPRNR
BIL.NUMMERPLADE

Fremmednøgler (referencer):
HUS.BEBOERID --> PERSON.CPRNR
PERSON.BILID --> BILER.NUMMERPLADE
BIL.GARAGEID --> HUS.MATRIKELNR

Dvs. at fremmednøglen på HUS.BEBOERID er transitivt afhængig af HUS.MATRIKELNR.
Avatar billede lasse_buck Nybegynder
18. oktober 2002 - 14:53 #14
BILER.NUMMERPLADE skulle have været BIL.NUMMERPLADE (sorry!)

HUS --> PERSON --> BIL --> HUS
Avatar billede stig3 Mester
18. oktober 2002 - 15:37 #15
Det forstår jeg godt, men det jeg mener er at som jeg forstår BCNF er det en cirkulær reference internt i een tabel, der er problemet.

I dit eksempel er det en cirkulær reference gennem 3 tabeller......

Men jeg ved ikke om det så stadig er et problem ??
Avatar billede stig3 Mester
24. oktober 2002 - 15:37 #16
Jeg kom et stykke af vejen, men ikke til vejs ende.

I får lidt for jeres besvær

Tak for hjælpen
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