Delen via


Veel-op-veel-relaties weergeven in afgeleide hiërarchieën (Master Data Services)

Van toepassing op:SQL Server in Windows Azure SQL Managed Instance

Belangrijk

Master Data Services (MDS) wordt verwijderd in SQL Server 2025 (17.x). MdS wordt nog steeds ondersteund in SQL Server 2022 (16.x) en eerdere versies.

Afgeleide hiërarchieën (DH) geven een-op-veel-relaties weer en kunnen nu ook veel-op-veel-relaties weergeven.

Veel-op-veel-relaties (M2M)

Een veel-op-veel-relatie (M2M) tussen twee entiteiten kan worden gemodelleerd met behulp van een derde entiteit die een toewijzing tussen deze entiteiten biedt:

mds_hierarchies_manytomany mds_hierarchies_manytomany

In het bovenstaande voorbeeld is er een M2M-relatie tussen de entiteiten Employee en TrainingClass , geleverd door de toewijzingsentiteit ClassRegistration. Een werknemer kan worden geregistreerd als leerling/student in meerdere klassen en elke klas kan meerdere leerlingen/studenten bevatten.

U kunt een afgeleide hiërarchie maken die bijvoorbeeld leerlingen/studenten per klas weergeeft of de relatie omkeren en klassen weergeven die zijn gegroepeerd op leerling/student.

Opmerking

SQL Server 2016 (13.x) heeft afgeleide hiërarchie geïntroduceerd voor M2M-relaties. Deze mogelijkheid was niet beschikbaar vóór die versie.

Ga eerst naar de pagina voor afgeleid hiërarchiebeheer en maak een nieuwe afgeleide hiërarchie:

mds_hierarchies_add_derived_hierarchy mds_hierarchies_add_derived_hierarchy

Voeg vervolgens niveaus toe aan de nieuwe afgeleide hiërarchie, beginnend vanaf de onderkant. In dit voorbeeld willen we studenten (werknemers) per klas laten groeperen. De entiteit Werknemer is daarom het bladniveau van de hiërarchie en wordt eerst toegevoegd:

mds_hierarchies_edit_derived_hierarchy_one mds_hierarchies_edit_derived_hierarchy_one

In de bovenstaande schermopname ziet u dat de entiteit Werknemer wordt weergegeven onder Huidige niveaus in het midden als het enige niveau. In de voorbeeldweergave van de afgeleide hiërarchie aan de rechterkant ziet u een lijst met alle leden van de entiteit Werknemer. In de sectie Beschikbare niveaus aan de linkerkant ziet u welke niveaus boven op het huidige hoogste niveau (werknemer) kunnen worden toegevoegd. De meeste van deze zijn op domeinen gebaseerde kenmerken (DBA's) voor de entiteit Werknemer , met inbegrip van de afdeling DBA.

Vanaf SQL Server is er een nieuw type niveau dat M2M-relaties modelleert, bijvoorbeeld: Klasse (toegewezen via ClassRegistration.Student). De niveaunaam is uitgebreider dan de anderen om de extra informatie, die nodig is om de toewijzingsrelatie ondubbelzinnig te beschrijven, weer te spiegelen. Sleep dit niveau naar het niveau Werknemer in de sectie Huidige niveaus :

mds_hierarchies_edit_derived_hierarchy_two mds_hierarchies_edit_derived_hierarchy_two

In de preview worden nu werknemers weergegeven die zijn gegroepeerd op de trainingsklassen waarvoor ze zijn geregistreerd. Omdat dit een M2M-relatie is, kan elk kind lid meerdere ouders hebben. In het bovenstaande voorbeeld is werknemer 6 {Hillman, Reinout N} geregistreerd als student in twee klassen, 1 {Master Data Services 101} en 4 {Career-Limiting Moves}.

Deze toewijzingsrelatie kan ook omgekeerd worden weergegeven, waarbij klassen per student gegroepeerd worden.

mds_hierarchies_available_entities_and_hierarchies mds_hierarchies_available_entities_and_hierarchies

Ook hier ziet u hoe een kind onder meer dan één ouder kan worden weergegeven: trainingsklasse 1 {Master Data Services 101} wordt weergegeven onder zowel 6 {Hillman, Reinout N} als 40 {Ford, Jeffrey L}.

De leden van de toewijzingsentiteit ClassRegistration worden nergens in de afgeleide hiërarchie weergegeven. Ze worden alleen gebruikt om de relaties tussen ouder- en kindleden in de hiërarchie te definiëren.

U kunt de M2M-relatie bewerken door de leden van de koppelingsentiteit te wijzigen. Dit kan door een van de volgende handelingen uit te voeren. De M2M-relatie is alleen-lezen op de pagina Afgeleide Hiërarchie Explorer.

  • Wijzig de leden van de toewijzingsentiteit op de pagina Entity Explorer met behulp van de invoegtoepassing Master Data Services voor Excel of met behulp van gegevensfasering.

  • Versleep kindknooppunten tussen ouders op de pagina Afgeleide Hiërarchie Explorer.

    Met deze methode worden bestaande leden indien mogelijk gewijzigd en worden indien nodig nieuwe leden toegevoegd. Bestaande leden worden niet verwijderd.

    Als u bijvoorbeeld met de ClassRegistration-toewijzingsentiteit een student naar het ongebruikte knooppunt verplaatst, wordt de klasse-attribuutwaarde van het bijbehorende lid van de mapping entiteit gewijzigd in null en wordt het lid niet verwijderd. Als je een student van het ongebruikte knooppunt naar een klas verplaatst en er bestaat een bestaand toewijzingslid dat overeenkomt met de student waarbij de klas null is, dan wordt dat lid aangepast door de klas van null naar het nieuwe bovenliggende element te wijzigen. Als er geen dergelijk lid wordt gevonden, wordt er een toegevoegd.

    Dit proces voorkomt dat leden worden verwijderd om ongewenste verwijdering van andere gebruikersgegevens te voorkomen, bijvoorbeeld als de toewijzingsentiteit andere kenmerken bevat dan de twee die de relatie tussen bovenliggende en onderliggende elementen definiëren. Gebruikers moeten verwijderingen expliciet direct uitvoeren op de koppelingsentiteit.

Het nieuwe M2M-niveau kan overal in een afgeleide hiërarchie voorkomen waar een DBA-niveau (domain-based attribute) is toegestaan. Een M2M-niveau kan bovenaan staan, zoals in de bovenstaande voorbeelden. Het kan boven en/of onder een DBA-niveau zijn, inclusief recursieve niveaus. Deze kan zich onder een expliciet hiërarchieniveau (afgeschaft) bevinden. Meerdere M2M-relaties kunnen worden gekoppeld in dezelfde afgeleide hiërarchie.

M2M-niveaus kunnen worden verborgen, net als andere afgeleide hiërarchieniveaus.

M2M-relatie in voorbeeldmodel

Bekijk voor een demonstratie van een M2M-relatie de afgeleide hiërarchie Regioklimaat in het voorbeeldmodel voor klanten dat is inbegrepen bij Master Data Services.

Zoals te zien in de volgende afbeelding, is de niveau naam die deze relatie modelleert mds_Number1Klimaat (toegewezen via RegionClimate.Region). De mds_Number2Preview toont regio's gegroepeerd op de typen klimaat waaraan ze zijn gekoppeld. Dit is een M2M-relatie omdat er regio's (kindleden) zijn die geassocieerd zijn met meerdere klimaten (ouders). Mds_Number3 APCR {Asia Pacific} is bijvoorbeeld gekoppeld aan mds_Number4A {Tropical} en mds_Number5B {Dry}.

mds_M2MRelationship_Example_CustomerModel

Zie Voorbeeldmodellen en -gegevens implementeren voor instructies voor het implementeren van het klantvoorbeeldmodel en andere voorbeeldmodellen die deel uitmaken van Master Data Services.

One-Many Relatie

Een lid van een DH kan ouder van veel kindleden zijn, maar het kan over het algemeen niet meer dan één ouder hebben (zie Ledenbeveiliging). Stel dat er twee entiteiten zijn: Werknemer en Afdeling, waarbij elke werknemer tot één afdeling behoort. Deze relatie wordt gemodelleerd door toe te voegen aan de entiteit Werknemer een op een domein gebaseerd kenmerk (DBA) dat verwijst naar de entiteit Afdeling:

mds_hierarchies_onetomany mds_hierarchies_onetomany

Dit is een een-op-veel-relatie omdat elke werknemer tot slechts één afdeling behoort, maar elke afdeling kan meerdere werknemers hebben. Er kan een afgeleide hiërarchie worden gemaakt waarin werknemers worden gegroepeerd per afdeling:

mds_hierarchies_dh_screenshot mds_hierarchies_dh_screenshot

Beveiliging van leden

Een hiërarchie die duplicatie van leden toestaat (een lid mag meer dan één bovenliggende hiërarchie hebben) kan niet worden gebruikt om autorisaties voor leden toe te wijzen. Voorbeeld:

  • Een recursieve afgeleide hiërarchie (RDH) die geen null-recursies verankert (elk lid op recursief niveau wordt weergegeven onder zowel ROOT als het recursieve bovenliggende element).

  • Een recursieve afgeleide hiërarchie met een niveau boven het recursieve niveau (elk lid van het recursieve niveau wordt weergegeven onder zowel het niet-recursieve bovenliggende als het recursieve bovenliggende niveau).

  • Een afgeleide hiërarchie met een M2M-niveau (een kind kan worden toegewezen aan veel ouders).

Verzamelingen

Verzamelingen en expliciete hiërarchieën worden afgeschaft. De opgeslagen conversieprocedure (udpConvertCollectionAndConsolidatedMembersToLeaf) converteert verzamelingsleden naar bladleden en maakt veel-op-veel afgeleide hiërarchieën om lidmaatschapsgegevens van verzamelingen vast te leggen.

Zie ook

Afgeleide hiërarchieën (Master Data Services)