Ceci est la question BestPractice (ou du moins j'espère que c'est).Un-à-plusieurs ou plusieurs-à-plusieurs?
EDIT: Cet exemple est juste pour clarifier le problème. Ce pourrait être la personne, le bureau, l'information de contact.
Le problème:
Il y a 3 tables:
RightsSet
(
ID,
CanView,
CanEdit,
ObjectTypeID,
ObjectID
)
User
(
ID,
Username,
Password,
ProfileID
)
ProfileID
(
ID,
Name,
Description
)
l'utilisateur et le profil peuvent avoir plusieurs RightsSets. RightsSet doit appartenir à 1 (et seulement 1) utilisateur ou profil.
Comment y parvenir? Dois-je créer des tables supplémentaires
UserRightsSets
(
UserID,
RightsSetID
)
ProfileRightsSets
(
ProfileID,
RightsSetID
)
Le problème est: Comment assurez-vous que lorsque ProfileRightsSet est supprimé, le RightsSet est également supprimé (parce que RightsSet appartient au profil et au profil seul)? Comment s'assurer que RightsSet n'appartient qu'au profil et non au profil et à l'utilisateur?
Sinon, je pourrais modifier la table RightsSet
RightsSet
(
ID,
CanView,
CanEdit,
ObjectTypeID,
ObjectID,
UserID,
ProfileID
)
Le problème avec ce ... Eh bien, si plusieurs objets partagent RightsSet? (Ok, je ne peux pas penser à un exemple, mais je suis sûr qu'il ya des scénarios valides où plus de 2 types d'actions de l'entité une sorte d'entité.)
Le tout semble plutôt mal pensé - pourquoi ne pas faire ce que font la plupart des systèmes d'autorisation et utiliser des rôles qui peuvent être assignés à un nombre quelconque d'utilisateurs? –
Eh bien ... Il n'est vraiment pas question d'utilisateurs et de profils ... Il s'agit de relation entre 3 entités dans lesquelles 2 entité peut avoir plusieurs de 3ème, mais 3ème doit appartenir à précisément 1. –