首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计最佳实践.具有多个引用的链接/连接表

数据库设计最佳实践.具有多个引用的链接/连接表
EN

Stack Overflow用户
提问于 2015-09-22 10:46:10
回答 2查看 988关注 0票数 1

我有成员表和person表,并在多到多的关系中将membership_person链接表(列: person_id和membership_id)

每个人都可以有一个或多个地址,电话和电子邮件。这些存储在单独的表格中,如地址、电话和电子邮件表。

我现在面临的新情况是,一个拥有多个成员但他/她更喜欢为每个成员使用不同的地址、电话号码和电子邮件的人。

下面是一个示例:

代码语言:javascript
复制
M1 => P1 
   => address-1 
   => phone-1 
   => Email-1

M2 => P1 
   => address-2 
   => phone-2 
   => Email-2

M3 => P1 
   => address-3 
   => phone-3 
   => Email-3

处理上述问题的数据库最佳实践是什么?我是否应该创建一个单独的链接表,如membership_address、membership_phone和membership_email?还是将address_id、phone_id、email_id添加到现有的membership_person表中?

谢谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-22 11:09:56

这称为关联数据--关于两个实体之间关联的数据--并将其存储在关联表中。

类似于(使用mysql语法):

代码语言:javascript
复制
create table membership_person (
    person_id int not null references person,
    membership_id int not null references membership,
    address_id int not null references address,
    phone_id int not null references phone,
    email_id int not null references email,
    primary key (person_id, membership_id)
)

额外的3列为每个成员定义一个人的联系人实体。

票数 1
EN

Stack Overflow用户

发布于 2016-02-10 17:01:24

扩展,下面是一个建议。

Table:Membership_Person

复合主键 (membership_id,person_id,table_id,优先级)

字段

  • membership_id -引用成员资格表
  • person_id -引用person表
  • table_id -指示作为此行引用表的电话、地址或电子邮件表
  • table_entry_id -引用表的主键
  • 优先-这个人的首选条目+会员+(电话、地址或电子邮件)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32714869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档