oaoa Skrevet 1. september 2008 Del Skrevet 1. september 2008 (endret) Hei, Jeg er rimelig "ny" på databasetegning, men kanskje det er det noen som har tips om hvordan jeg kan løse følgende problemstilling. For forklaringens skyld, gir jeg den faktiske problemstillingen en litt annen vinkling enn realiteten, men prinsippet skal bli det samme. Vi har "Menn" og "Kvinner". Vi ønsker et system som holder orden på hvilken menn som er sammen med hvilke kvinner på et gitt tidspunkt. Menn og Kvinner slår opp med hverandre rett som det er, og det blir derfor en mange til mange relasjon mellom dem. Men (selv om det kan virke urealistisk) så kan ikke Menn ha flere Kvinner på et og samme tidspunkt og samme gjelder for Kvinner - kun en mann på et gitt tidspunkt. En Mann kan være uten Kvinne, og en Kvinne kan være uten mann. Det gir meg (i midt hode) et diagram som dere ser i vedlegget. Men hvordan kan jeg forhindre at en Mann ikke har flere Kvinner innenfor samme periode (fraDato <-> tilDato)? Er dette "umulig" og må gjøres i koden (php el.), eller har noen en annen måte å gjøre dette på. Takk for all hjelp! Endret 1. september 2008 av oaoa Lenke til kommentar
terjeelde Skrevet 1. september 2008 Del Skrevet 1. september 2008 (endret) Det spørs litt hvordan du vil forhindre det. Vil du at PHP koden skal sjekke det manuelt før du legger inn? For begrensninger som går på å holde data tyddig og konsistent, så vil jeg egentlig anbefale at du legger selve begrensningen inn i databasen. Da får du en bedre garanti for at den overholdes etc. Hvordan du kan gjøre dette direkte i databasen avhenger litt av hvilke database du bruker. Det er gjerne flere muligheter for hver database også. Første jeg tenker på er PostgreSQL. Her kan du f.eks ha en stored procedure som trigges når du prøver å sette noe inn i tabellen. Du kan så scripte logikk som sjekker om den vil bindre en kvinne til en mann, i en periode hvor han ikke var tilgjengelig for denslags. Om det ikke går å binde dem sammen kan du f.eks kaste tilbake en feilmelding, og ikke oppdatere tabellen. Du kan skrive slike ting både i SQL og PL/SQL, men du kan også bruke scriptingspråk som Python. Endret 1. september 2008 av terjeelde Lenke til kommentar
oaoa Skrevet 1. september 2008 Forfatter Del Skrevet 1. september 2008 Takk for svar. Jeg ønsker å legge denne begrensningen i databasen, men visste ikke at man kunne lage "procedures". Jeg skal benytte en MySQL database. Få stete meg ned og søke litt og finne ut om/hvordan det er mulig der. Lenke til kommentar
kaffenils Skrevet 1. september 2008 Del Skrevet 1. september 2008 Hvorfor splitte opp Mann og Kvinne i to tabeller? Bedre å bruke en tabell og heller ha et bit-verdi som forteller om det er en mann eller kvinne. Mann-mann og kvinne-kvinne forhold er jo likestilt i loven med mann-kvinne forhold, og da er det jo grit å modellere en database som kan ta hensyn til slikt. Lenke til kommentar
oaoa Skrevet 1. september 2008 Forfatter Del Skrevet 1. september 2008 Jeg burde nok forklart meg bedre der. I den reelle problemstillingen min er det stor forskjell på Mann og Kvinne tabellen. De inneholder stor forskjell i entiteter osv. Derfor så er de skilt i to tabeller. Uansett om man har det i en tabell, så er vel problemstillingen med "hvordan forhindre at en mann har to kvinner på samme tidspunkt" gjeldende (og samtidig ha en historikk over dette). Da må man vel ha en egen "Forhold" tabell, og det var i denne jeg ikke helt forstod hvordan jeg kunne forhindre at det ble dobbelt opp for en mann/kvinne i samme tidsperiode. Lenke til kommentar
Manfred Skrevet 1. september 2008 Del Skrevet 1. september 2008 men kan ikke en kvinne ha en kvinne da? Lenke til kommentar
oaoa Skrevet 2. september 2008 Forfatter Del Skrevet 2. september 2008 men kan ikke en kvinne ha en kvinne da? You wish? Lenke til kommentar
kaffenils Skrevet 2. september 2008 Del Skrevet 2. september 2008 Uten at jeg vet eksakt hva du designer så må du jo tenke på at homofile eksteskap er likestilt med hetrofile, så hvorfor designe en database som ikke klarer å oppfylle dette? Lenke til kommentar
Manfred Skrevet 2. september 2008 Del Skrevet 2. september 2008 men kan ikke en kvinne ha en kvinne da? You wish? Jeg synes vel heller kanskje at det er litt "gammeldags" at det må være mann og kvinne, og at systemet låses veldig, og tar ikke hensyn til alt. Du kan ha alle attributtene i "person"-tabellen, men et bit-felt som angir mann eller kvinne... og det avgjør da hvilke attributter du leser i systemet ditt. Jeg skrev kvinne og kvinne fordi jeg ikke gadd kommentarer på om jeg skulle skrevet "mann og mann". Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå