První věc, kterou bych udělal, je doporučit použití ORM jako Linq-To-Sql nebo NHibernate což vám poskytne objektové reprezentace vašeho datového modelu, díky čemuž je mnohem jednodušší zvládnout složité věci, jako jsou operace many-to-many CRUD.
Pokud ORM není součástí vaší sady nástrojů, zde je návod, jak by to vypadalo v SOL.
Users UserAddresses Addresses ======= ============= ========= Id Id Id FirstName UserId City LastName AddressId State Zip
Naše stoly jsou spojeny takto:
Users.Id -> UserAddresses.UserId Addresses.Id -> UserAddresses.AddressId
- Všechny záznamy v Users založené na 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)
- Všechny záznamy v Adresách založené na 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)