可能な限りスケーラブルになるようにデータベースを設計しようとしているので、単純なシナリオでコンセプトをテストしています。
contact
テーブルがあるとしましょう。通常、連絡先には 、address
、phone number
、mobile number
および がありemail address
ます。
1 つのテーブルがこの情報を保持できます。ただし、連絡先にこれらの詳細が複数ある場合はどうなるでしょうか。私の解決策は、ジャンクションテーブルを次のように使用することです。
contact -* contact_address *- address
contact -* contact_phone *- phone
contact -* contact_mobile *- phone
contact -* contact_emailaddress *- emailaddress
これにより、連絡先に関するすべての情報を取得できます。さらにaddress
、phone
およびemailaddress
テーブルは、データの分析から単純な再利用までを目的としたデータ バンクになります。
ただし、これがパフォーマンスにどのような影響を与えるのか、また、これが良い習慣であるかどうかはまだわかりません。これは主に、contact
テーブルが an のみを保持し、id
他には何も保持しないためです。
1つの注意点は、これはsymfony2でdoctrine2を使用しているため、長いクエリを書くことは問題にならないということです.私の主な関心事は上記のものです.これは1つのテーブルから8つにジャンプしました.連絡先は私がこれ。