設計の現状では、Companys テーブルや ContactTypes テーブルなど、いくつかのものが欠けています。Contacts テーブルにリンクしている CoEmpJob テーブルに外部キーがないようです。
Phones テーブルでは、個人的にはプレフィックス フィールドを使用しません (連絡先を電話プレフィックスで表示したい場合を除きます)。この場合、すべての電話番号が一意であることが保証されます。その場合、PhoneNum フィールドが主キーになり、 PhoneID フィールドは不要ですが、夫と妻が同じデータベースにある場合もあります。彼らはほぼ確実に異なる携帯電話番号を持っていますが、ほぼ確実に同じ自宅の電話番号を共有しています! この場合、あなたのデザインは正しいです。
複数の住所を持っている人が何人いるかはわかりません (あったとしても、非常に少ないと思います)。これは、Address テーブルのフィールドを Contacts テーブルに移動できることを意味します。
(追加) 会社に関して、どの Person がどの Companyで働いているかを指定したい場合は、会社テーブル (欠落) と結合テーブル (CoEmpJob) が必要になります。現実の世界では、この設計にはさらに多くのテーブルが必要になります。結合テーブルは、どの連絡先がどの会社に接続されているか、現在の仕事は何かを示すことができますが、人々は仕事 (および会社) を変えるため、そのような設計では履歴が保存されません。 . また、人 (従業員) を部門にリンクするのが通例です。1 人の人が一度に複数の部門に接続できる可能性があるため、別の結合テーブルが必要になります。これは非常に複雑になる可能性があります-それはあなたが望むものに依存します.
あなたのコメントは、会社のデータを連絡先テーブルに保存することを示唆しています。これは非常に悪い考えです。それらは別々に保管する必要があります。