Det första jag skulle göra är att rekommendera att använda en ORM som Linq-To-Sql eller NHibernate som kommer att ge dig objektrepresentationer av din datamodell som gör det mycket enklare att hantera komplexa saker som många-till-många CRUD-operationer.
Om en ORM inte är en del av din verktygsuppsättning så här är hur detta skulle se ut i SOL.
Users UserAddresses Addresses
======= ============= =========
Id Id Id
FirstName UserId City
LastName AddressId State
Zip
Våra bord är sammanfogade så här:
Users.Id -> UserAddresses.UserId Addresses.Id -> UserAddresses.AddressId
- Alla poster i Users baserat på 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)
- Alla poster i Adresser baserade på 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)