Den første ting, jeg vil gøre, er at anbefale at bruge en ORM som Linq-To-Sql eller NHibernate som vil give dig objektrepræsentationer af din datamodel, som gør det meget nemmere at håndtere komplekse ting som mange-til-mange CRUD-operationer.
Hvis en ORM ikke er en del af dit værktøjssæt, så her er, hvordan det ville se ud i SOL.
Users UserAddresses Addresses
======= ============= =========
Id Id Id
FirstName UserId City
LastName AddressId State
Zip
Vores borde er samlet på denne måde:
Users.Id -> UserAddresses.UserId Addresses.Id -> UserAddresses.AddressId
- Alle poster i Brugere baseret 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)
- Alle poster i adresser baseret 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)