http://en.wikipedia.org/wiki/Database_normalizationを見ると、正規化に関する興味深い点がたくさんあります。さまざまな程度の正規化を検討する必要があります。
あなたの場合、いくつかのメンバーがあり、各メンバーにはアドレスがあります。メンバーが持つことができるアドレスは 1 つだけであることは、設計上暗示されています。同様に、あなたのデザインは、メンバーが 1 つの電話と 1 つの電子メール アドレスしか持っていないことを意味します。これはさまざまな方法で処理できますが、まず、次のような方法を検討することをお勧めします。
Member (Table)
MemberID (PK)
MemberAddressID (FK)
MembershipType (FK) -- To a dictionary-table with membership types.
FirstName (ATT)
LastName (ATT)
Phone (ATT) -- (*OR* it could be placed in a separate side-table with phonenumbers)
Email (ATT) -- (*OR* it could also be placed in a separate side-table)
Member_Address (Table)
Member_ID (FK)
Member Address (ATT)
Member_Zip_Code (ATT) -- (*OR* it could be FK to a separate table with Zip-codes, states and cities)
Member_City (ATT)
Member_State (ATT)
WithMember_city
とMember_State
You は厳密に言えば、第 2 正規形に違反しています。都市と州は郵便番号に暗黙的に含まれていると想定しているためです。Phone と Email をテーブルの属性として保持する場合、設計が複数の電話番号 (自宅/職場/セル) または電子メール アドレスを処理できないため、正規化に違反しています。
多くの場合、そして実用的に、これはいくつかの追加の属性を追加することで解決され、差し迫った問題は解決されますが、正規化の違反は維持されます。クリーン/正しい解決策は、この情報をアドレスと同じように別のサイドテーブルに配置し、FK/PK 関係でそれにリンクすることです。