04. marts 2005 - 17:06Der 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 ??
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
Ø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.
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 ??
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.
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.
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?
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.
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å.
Synes godt om
Ny brugerNybegynder
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.