就设计而言,您缺少一些东西,例如 Companies 表和 ContactTypes 表。CoEmpJob 表中似乎没有链接到 Contacts 表的外键。
在 Phones 表中,我个人不会使用前缀字段(除非您希望按电话前缀显示联系人),在这种情况下,每个电话号码都保证是唯一的,在这种情况下,PhoneNum 字段将成为主键,而PhoneID 字段是不必要的 - 但您可能会遇到夫妻在同一个数据库中的情况;虽然他们几乎可以肯定有不同的手机号码,但他们几乎可以肯定共享同一个家庭电话号码!在这种情况下,您的设计是正确的。
我不知道有多少人拥有多个地址(如果有的话,我认为很少),这意味着地址表的字段可以移动到联系人表中。
(添加)关于公司,如果您想指定哪个 Person 在哪个 Company 工作,那么您将需要一个公司表(缺失)和一个连接表(CoEmpJob)。在现实世界中,这种设计还需要更多的表——连接表可以显示哪些联系人与哪些公司相关联以及他们当前的工作是什么,但人们会更换工作(和公司),因此这样的设计不会存储任何历史记录. 此外,习惯上将人员(员工)连接到一个部门 - 一个人可能一次连接到多个部门,这意味着您将需要另一个连接表。这可能会变得非常复杂——这取决于你想要什么。
您的评论表明您希望将公司数据存储在联系人表中 - 这是一个非常糟糕的主意;他们应该分开。