Salut,

Je travaille sur une base de données assez complexe dans laquelle il existe de très nombreuses relations entre les tiers.

J'aimerais structurer la base comme suit :

Tiers (tous les tiers, physiques ou moraux)
clef Guid(UniqueIdentifier) default newid()

Tiers_PP
clef Guid(UniqueIdentifier) en liaison 1-1 avec Tiers

Tiers_PM
clef Guid(UniqueIdentifier) en liaison 1-1 avec Tiers

Tiers_Médecin
clef Guid(UniqueIdentifier) en liaison 1-1 avec Tiers_PP

Tiers_Patient
clef Guid(UniqueIdentifier) en liaison 1-1 avec Tiers_PP

Tiers_Hopital
clef Guid(UniqueIdentifier) en liaison 1-1 avec Tiers_PM

Cette astuce est destinée à me permettre lorsque c'est nécessaire de pouvoir considérer l'ensemble des tiers qu'ils soient physiques ou moraux sans avoir à utiliser de requête union qui plombe les perf à mort.

Si je mets en relation

Tiers avec Tiers_PP et Tiers_PM, que je crée un nouveau tiers et que je mets son id dans PP par exemple, l'intégrité référentielle attend la même valeur dans PM or je ne veux pas.

Question : existe-t-il une astuce pour qu'une relation 1-1 entre deux tables soit possible sans utiliser une clef étrangère mais bien en utilisant deux clefs primaires dont l'une est newid() et l'autre prend la même valeur ?

D'avance merci pour votre aide,

Laurent