Comment puis-je créer un multiple de la table de vérification de la contrainte?
Essayez d'imaginer cette petite base de données...
Diagramme
retiré morts ImageShack lien bénévoles de schéma de base de données
Tables
Volunteer Event Shift EventVolunteer
========= ===== ===== ==============
Id Id Id EventId
Name Name EventId VolunteerId
Email Location VolunteerId
Phone Day Description
Comment Description Start
End
Associations
Les volontaires peuvent s'inscrire pour plusieurs événements.
Les événements peuvent être pourvus par de multiples bénévoles.
Un événement peut avoir plusieurs quarts de travail.
Un changement appartient qu'à un seul événement.
Un poste de travail peut être géré par un seul bénévole.
Un bénévole du personnel de plusieurs quarts de travail.
Vérifier Les Contraintes
-
Puis-je créer une contrainte de validation de
appliquer qu'aucune maj est composé de
un bénévole qui n'est pas signé pour
ce déplacement de l'événement? -
Puis-je créer une contrainte de validation de
faire valoir ce que de deux chevauchement
ne sont jamais comblés par le même
bénévole?
- Le schéma est parti (à partir de ImageShack). Est-il possible de le mettre à jour?
Vous devez vous connecter pour publier un commentaire.
Le meilleur endroit pour faire respecter l'intégrité des données est la base de données. Soyez assuré que certains développeur, intentionnellement ou non, sera de trouver un moyen de se faufiler incompatible trucs dans la base de données si vous les laissez faire!
Voici un exemple avec les contraintes de vérification:
Voici quelques tests pour les nouveau vérifications d'intégrité des données:
Voici les définitions de table:
ALTER TABLE EventVolunteer ADD CONSTRAINT chkSignup2 CHECK (dbo.SignupMismatches() = 0);
Ou, n'est-ce pas nécessaire?La Question 1 est facile. Juste avoir votre tableau de Décalage référer directement à la EventVolunteer table et vous êtes tous ensemble
Ce que je voudrais faire est d'avoir une colonne d'Identité sur le EventVolunteer table auto-incrémente, avec une contrainte unique sur l'id de l'événement, VolunteerId paire. Utiliser le EventVolunteerId (identité) comme la clé étrangère de la table de fortune. Ceci impose la contrainte que vous aimeriez assez simplement, tandis que la normalisation de vos données quelque peu.
Je comprends que ce n'est pas la réponse à votre question d'ordre général, cependant, je voudrais voir ce que la meilleure solution à votre problème spécifique.
Edit:
Je devrais avoir lu la question entièrement. Cette solution permettra d'éviter un bénévole de faire deux équipes lors de la même manifestation, même si elles ne se chevauchent pas. Peut-être le déplacement de la maj de début et de fin de la EventVolunteer et avoir la contrainte de vérification sur fois sur la table suffirait, mais alors vous devez transférer les données à l'extérieur de la table de fortune qui ne semble pas intuitif pour moi.
Il y a un moyen de le faire en utilisant des déclencheurs, qui je ne vous le recommande pas. Je recommanderais de ne pas mettre vos affaires de la logique à la base de données de niveau. La db n'a pas besoin de savoir qui est la dotation d'un certain déplacement à quel moment. Cette logique doit être mis dans votre buisness couche. Je vous conseille d'utiliser une construction d'un dépôt de modèle. Scott gutherie a un très bon chapitre dans son mvc 1.0 livre qui décrit ce (Lien ci-dessous).
http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx