2009-07-27 14 views
0

J'ai récemment été chargé d'un nouveau projet de stockage de données analytiques. Je veux donner un coup de feu à ORM; la cartographie ne semble pas difficile mais ce problème m'a vexé.NHibernate Conditional Mapping

Cette base de données stocke des données pour Google Analytics, Quantcast et tout futur fournisseur d'analyse. J'ai reçu à peu près le schéma qui doit être utilisé. Ils veulent que ce soit très général, ce qui est possible jusqu'à ce que je stocke les matrices que nous suivons différents pour chaque fournisseur.

La disposition de table est en tant que telle:

tblClient - Magasins tous les sites clients.
tblProfile - 1 ou plus appartiennent à un client. Stocke les données de profil telles que le fournisseur utilisé par ce profil et le type de profil.
tblProvider - Stocke les données indiquant si un profil est un profil GoogleAnalytics, Quantcast ou un autre profil d'analyse.
tblProfile_Type - Type de piste pour le site client. Nous avons des sites clients répartis en différentes sections. C'est suivi ici.

Le problème vient lorsque j'ai besoin de lier la table de profil à une table metrix. Sur ce schéma, je n'ai que celui de Google mais il y en aura d'autres. J'ai besoin d'un lien basé sur la colonne FK pour Provider_Type dans la table de profil. Est-ce possible?

+0

Donc, vous allez avoir plusieurs tables Metrix, et à laquelle de joindre le profil dépend de l'identifiant du fournisseur? – anonymous

+0

Cela est correct – Wix

Répondre

0

Si je comprends bien vous avez beaucoup à une relation entre tblAny_Profile et tblAny_Provider. Peut être 'inverser' cette relation en ayant une relation un-à-plusieurs entre tblAny_Provider et tblAny_Profile? De cette façon, vous aurez la propriété Bag ou List dans l'entité tblAny_Provider ayant plusieurs instances d'entités tblAny_Profile.

+0

Le problème est de créer la relation correcte avec Google_Metric_Set ou Quantcast_Metric_Set (non montré dans le diagramme) en fonction du type de profil. – Wix