La première chose que je ferais est de recommander d'utiliser un ORM comme Linq-To-Sql ou NHibernate qui vous donnera des représentations d'objets de votre modèle de données, ce qui simplifiera beaucoup la gestion de choses complexes comme les opérations CRUD plusieurs-à-plusieurs.
Si un ORM ne fait pas partie de votre ensemble d'outils, voici à quoi cela ressemblerait dans SOL.
Users UserAddresses Addresses
======= ============= =========
Id Id Id
FirstName UserId City
LastName AddressId State
Zip
Nos tables sont jointes comme ceci :
Users.Id -> UserAddresses.UserId Addresses.Id -> UserAddresses.AddressId
- Tous les enregistrements dans Utilisateurs basés sur Addresses.Id
SELECT Users.*
FROM Addresses INNER JOIN
UserAddresses ON Addresses.Id = UserAddresses.AddressId INNER JOIN
Users ON UserAddresses.UserId = Users.Id
WHERE (Addresses.Id = @AddressId)
- Tous les enregistrements dans les adresses basés sur Users.Id
SELECT Addresses.*
FROM Addresses INNER JOIN
UserAddresses ON Addresses.Id = UserAddresses.AddressId INNER JOIN
Users ON UserAddresses.UserId = Users.Id
WHERE (Users.Id = @UserId)