私が最初にすることは、 Linq-To-Sql のような ORM を使用することをお勧めします または NHibernate これにより、データ モデルのオブジェクト表現が得られ、多対多の CRUD 操作などの複雑な処理がはるかに簡単になります。
ORM がツール セットの一部ではない場合、これが SOL でどのように見えるかを次に示します。
Users UserAddresses Addresses
======= ============= =========
Id Id Id
FirstName UserId City
LastName AddressId State
Zip
テーブルは次のように結合されます:
Users.Id -> UserAddresses.UserId Addresses.Id -> UserAddresses.AddressId
- 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)
- Users.Id に基づく Addresses のすべてのレコード
SELECT Addresses.*
FROM Addresses INNER JOIN
UserAddresses ON Addresses.Id = UserAddresses.AddressId INNER JOIN
Users ON UserAddresses.UserId = Users.Id
WHERE (Users.Id = @UserId)