Hier tout en travaillant sur un projet que je suis venu sur un 1 particulier: 1 relation qui m'a laissé se demander - comment mieux mettre en œuvre ce (clairement, nous avions fait mal: D)Comment mieux implémenter une relation 1: 1 dans un SGBDR?
L'idée est qu'il ya deux types d'entités, A et B. Ils peuvent chacun exister par eux-mêmes, mais ils peuvent aussi avoir un lien entre eux. S'il y a un lien, alors il doit s'agir d'un lien 1: 1, et travailler dans les deux sens.
C'est comme une bouteille et un bouchon. Ils peuvent exister à part, mais une fois couplés, la bouteille aura un seul bouchon, et le bouchon sera attaché à une seule bouteille (et la même).
Comment implémenteriez-vous cette relation tout en gardant à l'esprit toutes les meilleures pratiques en matière de normalisation, d'intégrité des données, etc.? Presque oublié de dire - ils ont chacun plus d'une douzaine de propriétés, donc les mettre dans la même table avec la moitié des champs étant NULL est une solution assez gênante. En outre, le lien peut être rompu et recréé avec une autre entité à tout moment.
Ce que vous avez décrit est un nombre à plusieurs. Il y a beaucoup de bouteilles de Coca et beaucoup de bouchons de Coke. Tout bouchon de Coke convient à n'importe quelle bouteille de Coke, mais un bouchon de Coke spécifique est associé à une bouteille de Coke spécifique. Une vraie relation one-to-one signifie que nous avons deux entités séparées qui * ne peuvent exister ensemble *. Si nous avons une instance de l'entité A, nous devons avoir une et une seule instance correspondante de l'entité B; de plus, l'instance de l'entité B doit avoir une instance unique de l'entité A. Cela se produit généralement parce que l'entité B est un sous-type de l'entité A (comme l'entité C, D, etc.). – APC