2013-12-20 60 views
0

我正在为社交媒体网站(单一作业)设计数据库。 我一直在努力与消息链接到成员。消息中将需要来自相同主键的两个外键。一个用于发送成员,另一个用于接收成员。我不确定这是可能的还是一个好主意,所以我想把一个成员分配给一个收件箱(许多成员 - 一个收件箱)。然后将所有邮件分配给收件箱(一个收件箱 - 许多邮件)。社会网络数据库设计/数据模型


会员许多 ------ 收件箱 ------ 许多消息

表的样子....

### ###############

会员概况
会员ID(PK)
名称
性别
收件箱ID(FK)

##################

收件箱
收件箱ID

## ################

消息
消息ID(PK)
收件箱ID(FK)
消息定向.... 要么或(当时会员名)
会员ID(FK)

这就是Ive得到了迄今为​​止ID欣赏一些指针,如果香港专业教育学院关闭了正确的道路。因为我越看越我的设计越不喜欢它。

+0

没有一个足够高的代表发布了图片为 –

+0

为什么会员有很多收件箱? –

+0

它的许多成员只有一个收件箱 –

回答

0

没有不这样做

消息可以属于多个成员,成员可以拥有多张的消息,所以你需要什么是所谓的连接表。

MemberMessage 
Memberid 
Message id 
+0

我原本以为这个想法,但完全脱离了使用收件箱来解决发件人和收件人两个会员ID在一个表中的问题。 –

+0

当我显示查询结果时,我仍然有点困惑,说我想搜索“joe bloggs”发送的所有消息。该表设计能够给我...发件人的成员名称,接收者的成员名称,消息内容等...或者它不重要吗?我在想那些问题吗? –

+0

@FunksterPhillipWatkins你可以很容易地用join语句获取数据。 –

0

你有没有考虑改变MEMBERID领域上的消息表像SendingMemberID,然后添加名为ReceivingMemberID另一场?这将允许您避免令人困惑的消息方向字段。

当然,您需要加入两次以获取用户的所有传入和传出消息,但这确实不是一件坏事。每条信息有两条记录(发送方一条,接收方一条)的备选方案有其自身的缺点。

祝你好运!

+0

您是否认为我需要在成员和消息之间使用复合主要和外部SendingMemberID,ReceivingMemberID和MessageID之间的连接表? –

1

五月草案模型可帮助您:

消息创建
enter image description here
信息消费:(发送后消息处理) enter image description here