Juste curieux quelle est la meilleure pratique pour résoudre le problème suivant. J'ai des institutions, des comptes et des tables d'utilisateurs. Les institutions et les comptes ont une relation un-à-plusieurs. Les institutions et les utilisateurs ont une relation un-à-plusieurs. Les utilisateurs et les comptes ont une relation plusieurs-à-plusieurs ou bien ils peuvent avoir plusieurs comptes (ou *). Cela signifie qu'un utilisateur peut être désigné pour tous les comptes et tous les nouveaux comptes ajoutés à l'institution à laquelle l'utilisateur aura accès sans ajouter explicitement la relation.Quelle est la meilleure pratique pour accommoder à la fois une relation un-à-plusieurs et un-à-tout (ou un-à-*)?
Répondre
que je le ferais comme ceci:
Institutions
InstitutionID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
Name VARCHAR(255)
Users
UserID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
Username VARCHAR(255) NOT NULL
InstitutionID INT NOT NULL
Accounts
AccountID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
Account VARCHAR(255) NOT NULL
InstitutionID INT NOT NULL
Users_Accounts
Users_AccountsID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
UserID INT NOT NULL
AccountID INT NULL
avoir un code d'utilisateur w/une entrée dans la table NULL
Users_Accounts
accès global (*) . De cette façon, vous pouvez déterminer l'institution sur n'importe quel compte et/ou utilisateur, ainsi que leurs autorisations. Editer: Les colonnes portant le même nom dans différentes tables impliquent une clé étrangère. Veuillez les utiliser si vous ne faites pas de lourdes charges.
Utilisez une table de mappage pour les relations plusieurs-à-plusieurs. Si un utilisateur a plusieurs comptes, créer une table de correspondance de users_to_account avec deux colonnes, l'une avec le compte clé étrangère, et un avec les utilisateurs clés étrangères, et je dirais même les faire ensemble une clé primaire composite:
users account ----- ---------- 1 5 1 10 2 5 2 10
Alors , les comptes 5 et 10 fois aux utilisateurs carte 1 et 2.
Oui, Eric, je ne suis pas sûr. Je suis un peu nuageux aujourd'hui, récupérant d'un rhume. –
Pourquoi utiliseriez-vous une table de recherche (et une autre jointure!) Quand vous pouvez simplement mettre un FK sur la table de compte? Aucun sens dans une recherche d'une relation un-à-plusieurs, juste 3NF standard. En outre, vous n'avez pas abordé l'aspect plusieurs-à-plusieurs. Par conséquent, je suis allé avec un -1. – Eric
Désolé, édité mon commentaire là-bas, donc c'est un peu détraqué. – Eric
Faites Accounts
avoir une clé étrangère à Institutions
.
Faites Users
avoir une clé étrangère à Institutions
.
Faire un drapeau sur le compte Users
qui indique qu'ils auront accès à tous Accounts
sur ce Institution
.
Créez une table de mappage plusieurs-à-plusieurs pour Users
à Accounts
. Ceci ne sera utilisé que si le drapeau User
n'a pas son drapeau de sorte qu'il ait accès à tous les Accounts
sur le .
Cela devrait résoudre votre problème.
- 1. Méthodes getClass() et statiques: Quelle est la meilleure pratique?
- 2. Quelle est la meilleure pratique pour modifier les états d'affichage?
- 3. Quelle est la meilleure pratique pour stocker et traiter des images et des vidéos?
- 4. Quelle est la meilleure structure de données à utiliser pour une relation progéniture?
- 5. Code d'erreur ou Exception - quelle est la meilleure pratique pour un service Web ASP.Net?
- 6. Quelle est la bonne pratique pour générer une sortie verbeuse?
- 7. Quelle est la meilleure: DMG ou PackageMaker
- 8. Quelle est la meilleure façon de créer une relation tableA HABTM tableA pour une application CakePHP?
- 9. Quelle est la meilleure pratique pour la réutilisation du modèle de domaine dans les applications composites?
- 10. Meilleure pratique: Quelle est la meilleure façon de stocker les messages d'exception/d'erreur ou d'information dans C# .net pour l'internationalisation?
- 11. Quelle est la meilleure pratique pour la gestion des exceptions dans Silverlight?
- 12. Quelle est la meilleure pratique pour une application web évolutive impliquant un état de session?
- 13. Quelle est la meilleure pratique pour compter des valeurs égales dans une base de données?
- 14. Quelle est la meilleure pratique pour renvoyer des fichiers à partir de WCF?
- 15. Quelle est la meilleure pratique pour lutter contre le problème de fermeture de la console?
- 16. Quelle est la meilleure pratique pour sortir une variable qui peut contenir ou non quelque chose en PHP?
- 17. Quelle est la différence entre AppDomain.CurrentDomain.BaseDirectory et Application.ExecutablePath en pratique?
- 18. Quelle est la relation entre CRITICAL_SECTION et CCriticalSection?
- 19. Quelle est la meilleure bibliothèque pour gérer une wiimote?
- 20. Quelle est la meilleure pratique pour développer un cadre d'importation de données PHP?
- 21. Quelle est la meilleure pratique pour créer des modèles de contrôle RE-USABLE dans Silverlight
- 22. iPhone: Quelle est la meilleure façon d'utiliser à la fois OpenGL et l'interface utilisateur native dans une application?
- 23. Quelle est la relation entre les réseaux bayésien et neuronal?
- 24. Quelle est la meilleure pratique pour utiliser ASP.NET MVC pour rendre beaucoup de fichiers html ou texte?
- 25. Quelle est la meilleure pratique pour gérer le temps en R?
- 26. Quelle est la meilleure pratique pour suivre les événements avec Google Analytics?
- 27. Est-ce que la sous-vue codée en dur est trop fragile ou la meilleure pratique?
- 28. Quelle est la meilleure pratique pour définir des extensions dans un standard XML?
- 29. Quelle est la meilleure pratique pour inclure des fichiers actionscript externes dans l'application flexible
- 30. Quelle est la meilleure architecture pour passer à XMPP?
Un utilisateur peut-il avoir accès aux comptes de plus d'un établissement (être associé à ceux-ci)? Si oui, un «super-utilisateur» aurait-il accès à tous les comptes d'une institution, à tous les comptes d'un ensemble d'institutions ou à tous les comptes de toutes les institutions? (Si non, nous voudrons prendre en compte les restrictions sur les affectations de compte.) –
Non, un utilisateur ne peut pas être associé à plusieurs institutions – Striker