2009-03-31 6 views
1

J'ai une situation utilisant l'héritage de table de classe où l'objet de base (qui est abstrait) est étendu par des types spécifiques de l'objet.Comment gérer l'héritage «parfois»?

Par exemple, personne -> Utilisateur -> Prospect

Cependant, dans certains cas, comme avec Prospect, parfois, il étend l'utilisateur et parfois non. Je ne peux pas inverser la relation car User! == Prospect donc je me demande comment gérer au mieux ce genre de scénarios où un objet s'étend parfois et parfois non. En outre, je sais que quelqu'un suggérera la composition sur l'héritage dans ce cas, mais ce n'est vraiment pas faisable parce que je compte sur la capacité d'étendre la fonctionnalité parent et les propriétés des membres sont remplies de sorte que toutes les propriétés sont accessibles dans le même manière.

Répondre

1

L'héritage dans une base de données signifie généralement que la clé primaire de la table enfant est une clé étrangère à la clé primaire de la table parente.
Mais vous mentionnez que l'enfant pourrait être un orphelin. Dans ce cas, le parent est une relation optionnelle. (Habituellement résolu par composition)

Vous pouvez créer deux classes, une extension User et une autre.

(mais cela peut ne pas convenir à ce que vous essayez de faire)

+0

Dans ce cas, chaque personne possède un person_id hérité de la table de base, mais un prospect peut hériter de l'un ou l'autre utilisateur ou seulement de la personne. –

+0

Ah, je vois où vous allez. Si un Propect a un Utilisateur, il doit obtenir les propriétés et méthodes supplémentaires de l'Utilisateur. Hmmmm, difficile ... –

3
+0

Grand site lié. Bonus pour être spécifique à la langue. –

Questions connexes