【问题标题】:Database design / data model for socail networking社交网络的数据库设计/数据模型
【发布时间】:2013-12-21 20:19:10
【问题描述】:

我正在为一个社交媒体网站设计一个数据库(uni assignment)。 我一直在努力处理指向 membermessages 链接。消息中将需要来自同一主键的两个外键。一个用于发送成员,一个用于接收成员。我不确定这是否可能或一个好主意,所以我正在考虑将一个成员分配到一个收件箱(许多成员 - 一个收件箱)。然后将所有邮件分配到收件箱(一个收件箱 - 许多邮件)。


成员 许多------1 收件箱 1-----许多 邮件

表格看起来像......

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

会员资料
会员 ID (PK)
名称
性别
收件箱 ID (FK)

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

收件箱
收件箱 ID

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

留言
消息 ID (PK)
收件箱 ID (FK)
消息方向 .... 发往或发自(然后是成员姓名)
会员 ID (FK)

这就是我到目前为止所得到的,如果我偏离了正确的道路,我将不胜感激。因为我越看我的设计就越不喜欢它。

【问题讨论】:

  • 目前还没有足够高的代表来发布图片
  • 为什么一个会员有很多收件箱?
  • 它的许多成员只有一个收件箱

标签: database database-design data-modeling erd


【解决方案1】:

草稿模型可以帮助您:

消息创建

消息消费:(在发送消息过程之后)

【讨论】:

    【解决方案2】:

    不,不要这样做

    消息可以属于多个成员,成员可以有多个消息,因此您需要所谓的联接表。

    MemberMessage
    Memberid
    Message id
    

    【讨论】:

    • 我最初是这么想的,但是在使用收件箱解决我的发送者和接收者两个成员 ID 在一个表中的问题时完全偏离了轨道。
    • 在显示查询结果时我仍然有点困惑,说我想搜索“joe bloggs”已“发送”的所有消息。该表格设计能否给我...发送者的成员名称,接收者的成员名称,消息内容等...或者没关系吗?我在思考不存在的问题吗?
    • @FunksterPhillipWatkins 您可以使用连接语句轻松获取数据。
    • 好的,谢谢。所以我在想的是 3 个表成员、成员消息和消息。成员有MemberID和其他属性。#####Membermessage有MessageID、SenderID(memberID)和ReceiverID(也是memberID)的复合主键。######Message有MessageID、Message内容等。这样可以吗?
    • 您最好使用 MemeberId、messageId、messagedirection,在最后一个字段中放置发送或接收。您不希望必须加入两次才能为一个用户获取所有消息
    【解决方案3】:

    您是否考虑过将 Message 表中的 MemberID 字段更改为 SendingMemberID 之类的内容,然后添加另一个名为 ReceivingMemberID 的字段?这将允许您避免有些混乱的消息方向字段。

    当然,您需要加入两次才能获取用户的所有传入和传出消息,但这确实不是一件坏事。为每条消息设置两条记录(一条用于发送者,一条用于接收者)的替代选项有其自身的缺点。

    祝你好运!

    【讨论】:

    • 你认为我需要在成员和消息之间建立一个连接表,其中包含复合主和外部 SendingMemberID、ReceivingMemberID 和 MessageID?
    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 2021-04-22
    • 2011-04-10
    • 2014-10-01
    • 2011-03-17
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多