データベースの設計には3NF以上必要ですが、一時的および恒久的に異なるフィールドを維持する必要はありません。また、複数の人が同じアドレスにとどまる場合のように冗長性を避けるために、同じアドレスが繰り返されます。
あなたのデザインは同様です。
1. User Table (id, name, email)
2. Address Table (id, region_id,zone_id,district_id)
UserAddressを言うユーザアドレス(1多くのまで)、ユーザー・アドレス割り当てのためのテーブルを必要とされる2つ以上の(将来性)の数値を格納するために、これは、あたりなどのようになります。以下;アドレス識別子フィールド、たとえばAddressType
を追加します。以上で
3. UserAddress(
Id, UserId (FK to User), AddressId (FK to Address Table),
AddressType (Permanent/Temporary))
フューチャースコープ改善が
を変更する今、あなたは、2つ以上を必要とする意志この場合、ユーザーアドレステーブル内のユーザーがどのアドレスに滞在した期間の日付を維持する機会を、持っていますフィールド。
Id, UserId (FK to User), AddressId (FK to Address Table), AddressType, startDate, endDate, IsCurrent, IsRented
とother desirable attributes
...
USERTABLEテーブルに1つ以上のフィールドを追加する場合はIsCurrentは、その後、あなたが直接、簡単なAND condition
により、ユーザの現在のアドレスを問い合わせることができると言います。
AND IsCurrent=1;
oh。代わりに領域hasMany関係はユーザーとは違いますか?なぜなら私は地域テーブルにuser_idを持っていないからです。代わりにユーザーのテーブルにregion_idがありますか? – Steve