Dubletter undgår du ved at lave nøgler (primær og index) med entydig nøgler. Projekt: Nøgle på projektid Adgang: Nøgle på personid og projektid person: Nøgle på Personid Du kan evt overveje at skifte personid med CPR, da du ellers kan få den samme person med 2 forskellige personid og du kan fjerne adgangid, da kombinationen projektid, personid er entydig. hvis du vil teste adgang, kan du udføre følgende: select projektid from person a, adgang b where a.personid = (ønsket id) and b.personid = a.personid Hvis fundet, har han adgang ellers ikke Hvis du har spgm, kan du skrive til mig Hilsen John Kurt Nielsen johnkurt@image.dk
Jeg kan da vist ikke lave en nøgle i adgang, da samme person kan være med i flere projekter og andre personer kan være med i samme projekt.
Det jeg vil undgå er er samme person står registreret med flere gang med samme projekt.
f.eks.
adgang (personID, projektID)
1,2 1,3 1,2 2,3
Her har person med ID 1 adgang til projekt 2 to gange. Så skal jeg vel lave en distinct join for at han ikke for vist samme projekt flere gang på hans oversigt over projekter??
Hvorfor kan du ikke lave et index over 2 felter nemlig projektid, personid ? Så undgår du de viste situation. Hvis DBS ikke håndtere index over flere nøgler, skal du selv håndtere det
OK Når man har en mange-til-mange relation, 'skubber' man en relation imellem, således at man kan få data på 3. normalform. Man får på den måde 1-til-mange relationer. Man løser så dublikeret problemet enten med nøgler (index) eller programmering afhængig af DBS. Er det bedre ?
Jeg tror jeg laver en select distict for at ungå dubletter.
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.