Avatar billede veronica Nybegynder
04. marts 2005 - 17:06 Der er 10 kommentarer og
2 løsninger

Dataset relation

Hejsa,

Jeg forsøger mig med at oprette typed datasets via Visual Studios dataset editor  (ie. hvor man laver en xml fil med extention *.xsd). Jeg ville gerne lave en master/detail relation mellem to tabeller.

Det går også fint langt hen ad vejen, ie. jeg kan godt fylde datasettets to tabeller, når der ikke er nogen relation mellem dem. Men problemet opstår i det øjeblik, der kommer NULL værdier fra databasen til en af relations-kolonnerne. Så får jeg fejlen
"Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints."

Det kan da ikke være meningen, at man ikke kan lave en 0-til-mange relation men kun en 1-til-mange relation ??

mvh. Veronica
Avatar billede burningice Nybegynder
05. marts 2005 - 12:30 #1
der er ikke noget der hedder 0 til mange relation. Det giver jo ikke mening. hvis du ikke har noget at relatere til har du jo ikke basis for nogen relation.

Man arbejder oftest med følgende tre typer af relationer

en til en
en til mange
mange til mange
mange til en

http://www.faqts.com/knowledge_base/view.phtml/aid/31339/fid/132
Avatar billede burningice Nybegynder
05. marts 2005 - 12:31 #2
tre = fire
Avatar billede veronica Nybegynder
07. marts 2005 - 09:23 #3
Øhm.. Lad os nu sige at jeg har nogle bøger, som skal kategoriseres efter et antal kategorier. Bøgerne kan have flere kategorier, eller de kan være ukategoriserede (ie. de har ikke fået nogen kategori endnu). Hvilken type relation ville du sige, dette var ?? I en database ville man jo bare sætte kategori_id til NULL indtil der var sket en kategorisering.
Avatar billede burningice Nybegynder
07. marts 2005 - 15:58 #4
det er en

mange til mange

du har mange kategorier og mange bøger, og hver bog kan have flere kategorier.

Til det bruger man typisk en Relation Table, eller Link Table (kært barn har mange navne). I praksis implementeres det på denne måde:

tblBooks:
id    name
1      noget
2      noget andet
3      jenses bedste godnathistorier

tblCategories:
id    name
1      børnebog
2      kogebog
3      Vinkelbanker

tblBookCategoryRelations:

book  category
1      1
1      3
2      2
3      3
3      2
Avatar billede veronica Nybegynder
08. marts 2005 - 09:28 #5
OK dårligt eksempel! Lad os tage det, som er mit faktiske problem.
Jeg er ved at lave en kontraktdatabase. Hver kontrakt har en ejer, men denne ejer bliver ikke nødvendigvis knyttet på kontrakten til at starte med. En kontrakt kan kun have 1 ejer.
Hvad nu ??
Avatar billede burningice Nybegynder
09. marts 2005 - 00:16 #6
hvis det ikke er påtvunget at der skal være en ejer af kontrakten kan du ikke lave en

en til mange (en ejer, mange kontrakter)

At lave en kontraktdatabase hvor det overhovedet er muligt ikke at knytte en ejer til lyder som noget sjusk. Du bør istedet lave en form for Template eller Draft-system hvor kontrakten ligger i en form for "sandbox" før der knyttes en ejer til.
Avatar billede veronica Nybegynder
09. marts 2005 - 09:06 #7
Jeg mener ikke, at det er urealistisk at man har en relation, som ikke er i brug for samtlige rækker. Dette er ikke sjusk, men realisme. At oprette en kopi-tabel til de rækker, hvor relationen ikke er i brug er efter min mening noget sjusk :-)
Jeg er skuffet over at dette ikke kan lade sig gøre. Vil finde en anden løsning.
Avatar billede veronica Nybegynder
09. marts 2005 - 09:06 #8
vi kan dele pointene, hvis du smider et svar
Avatar billede burningice Nybegynder
09. marts 2005 - 09:19 #9
du kan ikke se problemet? En relation uden noget at relatere til er ikke nogen relation og databasen vil under alle omstændigheder brokke sig. Hvis den ikke gjorde det, hvad er så idéen med at have relationer?
Avatar billede veronica Nybegynder
14. marts 2005 - 11:23 #10
Nej, jeg er åbenbart ikke god nok til at forklare problemet..
Nogle gange har man behov for, at have en relation, som ikke appliceres på samtlige rækker. Alle de relationelle databaser jeg kender understøtter dette. Relationen er valid nok, fordi feltet skal sættes til NULL eller værdien i opslagstabellen.
Men dette understøtter .Net åbenbart ikke.
Avatar billede veronica Nybegynder
14. marts 2005 - 11:25 #11
Eksempel

tabel 1:

id sprog
-----------
1  engelsk
2  dansk
3  fransk
4  portugisisk

tabel 2:

id  titel  sprog
----------------
1  titel1  3
2  titel2  1
3  titel3  NULL
4  titel4  2

Mao. vides det ikke, hvilket sprog, titel3 er skrevet på. Men jeg får jo ikke lov at angive 27, da dette ikke findes i opslagstabellen.
Avatar billede burningice Nybegynder
14. marts 2005 - 22:52 #12
i så fald kan du fixe det ved

id sprog
-----------
1  engelsk
2  dansk
3  fransk
4  portugisisk
5  unknown

tabel 2:

id  titel  sprog
----------------
1  titel1  3
2  titel2  1
3  titel3  5
4  titel4  2


Ved godt det ikke er det du søger, men lader til at være eneste workaround for begrænsningen du er stødt på.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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