18. maj 2009 - 21:07Der er
11 kommentarer og 1 løsning
Hjælp til spørgsmål ang. kardinalitet.
Jeg har et spørsgmål ang. kardinalitet.
Hvordan finder man ud af kardinaliteten for relationer?
Siger man f.eks ved 1:N - Er det så at 1 person kan booke mange værelser på samme tidspunkt men et værelse kan kun være booket af en person på et givent tidspunkt, eller vil det være en N:M situation fordi man ikke ser på tidspunktet, men blot at mange personer kan på det et tidspunkt booke mange værelser og mange værelser kan bookes af mange personer?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Mit spørgsmål går ud på at jeg er i tvivl om hvordan man helt præcist finder ud af kardinaliteten mellem to relationer.
Jeg er i tvivl om man siger at 1 person kun kan booke 1 værelse på et givent tidspunkt/periode (f.eks. 170/5/2009) altså om kardinalitets forhold siges om en periode eller om man kigger overordnet på det og derved opnår en M:N kardinalitet altså man siger at flere personer kan booke flere værelser - Man kigger altså ikke på tidspunktet/perioden, men blot at værelset kan bookes af flere personer og omvendt.
1 gæst kan booke flere faciliteter, f.eks. 1 bordtennisbane, 1 badmintonbane osv. I denne har jeg lavet en relation mellem entiteten GÆST og entiteten FACILITET som 1:N altså 1 gæst kan booke mange faciliteter, men en facilitet kan kun bookes af 1 gæst ad gangen.
Samtidigt er der et center hvor der er plads til f.eks. max 10 personer samtidigt. I denne relationer har jeg lavet kardinalitetes forholdene mellem entiteten GÆST og entiteten CENTER til M:N da mange gæster kan booke sig ind i et center samtidigt og et center kan have mange gæster booket ind samtidigt.
Dette er lavet i mit ER-diagram
I mit EER diagram har jeg så fundet frem til at ved at lave en superklasse/sub klasse kan jeg i princippet samle center med facilitet og gøre både baner og center til subklasser af en facilitets entitet. Dette afhænger af om hvordan kardinaliteten "siges" og det er min problemstilling, for hvis kardinaliteten udregnes fra samtidig booking så vil jeg ikke kunne samle center og baner da den ene vil være 1:N (for banerne) og den anden N:M (for center).
hvis du laver en facilities superklasse, og i den bruger et tal til antallet af samtidige bestilliger for en given enhed, vil du i bordtennis kunne sætte denne til 1 eller 2, og i center subklassen kunne sætte denne til 10...
Så får du noget der minder om en relation 1:N, for begge, da du jo ikke har N:M i nogle tilfælde. Du har K:N, (hvor K er en konstant) og dette er i grænseværdi sammenhænge fuldstændigt det samme som 1:N. Hvorimod N:M ikke er det samme, da N og M er vilkårligt store.
Så dit problem er at du regner forkert, og at begge dine problemer har samme kardinalitet, nemlig 1:N !!!
Efter at have rystet hovedet og kigget dit svar igennem igen har jeg så forstået det korrekt:
Ingen af mine entiteter har relation N:M men både for booking i center og af bane er der tale om en 1:N kardinalitet - er det korrekt?
I så fald kan jeg ikke helt forstå hvorfor? Siger man ikke at ved center entiteten (hvor der er plads til 10 ad gangen) at flere gæster kan booke sig ind i centeret samtidigt og centeret kan have flere bookende gæster samtidigt?
jo, ganske rigtigt kan flere gæster booke den samme ting samtidigt. MEN det er ikke vilkårligt mange der kan booke sig ind, men et meget begrænset antal. Derfor kardinaliteten K:N --> 1:N
Altså hvis man kender det præcise antal f.eks. max 10 vil det svare til en 1:N hvor i mod hvis man ikke kender antallet eller der ikke er en begrænsning i antal deltagelser vil det være en N:M situation?
Besvar med et Svar lige for du har hjulpet mig med mit spørgsmål.
Kender man ikke antalet (altså er antallet ubegrænset) får du M:N kardinalitet. Men er antallet begrænset vil du få noget der svarer til 1:N kardinalitet. i bund og grund fordi du regner med grænseværdier.
Eksemplet er at du skal regne (INF er uendelig): 1 / x, for x --> INF hvilket giver 0 k / x, for x --> INF hvilket også giver 0, hvis k er en konstant.
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.