【问题标题】:Database, still not sure about defining relationships数据库,仍然不确定定义关系
【发布时间】:2013-03-26 12:49:33
【问题描述】:

首先,我已经阅读了关于此事的thisthisthis 主题。我认为我理解它,但我仍然不确定我是否以正确的方式做这件事,因为我几乎只能识别关系。我基本上想知道我是否朝着正确的方向前进。

我正在创建一个数据库,用户可以在其中创建个人资料(包括免费和付费版本)并发布新闻项目。其他用户可以回复这些项目,并且反应可以获得评级。这是网站功能的一小部分,但它是让我担心的部分。我写下了以下内容(每一行代表两个表之间的链接):

用户: 一个用户可以定义一次附加信息 [识别,1:1] 一个用户可以有一种性偏好 [识别,1:1] 一个用户可以有一个支付状态 [识别,1:1] 一个用户可以定义五个问题 [Identifying, 1:n] 一个用户可以定义三个附加信息行 [Identifying, 1:n] 一个用户可以定义三个兴趣 [Identifying, 1:n] 消息: 一个用户可以发布多个新闻项目 [Identifying, 1:n] 一条新闻可以接收多个cmets [标识,1:n] 每条评论都有一位作者(用户)[识别,1:1] 每条评论都可以获得一个评分[识别,1:1] 每个评分一次只能由一个用户放置 [识别,1:1] 支付: 一项促销可以适用于所有用户,也可以适用于一个特定用户 [非识别性,1:n]

几乎所有上述关系都是确定的,这让我怀疑我是否理解这件事。

除此之外,我还使用了一个表格 (status) 来保存(其中包括)用户的付款状态和另一个表格 (promotions) 来保存可能的促销活动。我不清楚我是否应该将promotions 表链接到statususer 表。

谁能帮我解答疑惑?

【问题讨论】:

  • 虽然每个评论都有一个作者,但每个作者肯定可以制作许多 cmets - 所以评论与作者的关系肯定是 n:1 吗?另外,每个评论肯定可以收到很多评分(每个用户一个),所以评论与评分的关系是 1:n,一个用户可以做出许多评分,所以评分与用户的关系是 n:1?
  • 有道理,谢谢!所以据我了解另一部分,非识别关系非常罕见..?
  • 不一定 - 请注意,我之前的评论只是关于某些关系的 基数,而不是它们是否是识别/非识别关系。正如比尔卡尔文在这个问题的最高评价/接受的答案中所写:stackoverflow.com/questions/2814469(您在问题中链接),“识别关系的技术定义是孩子的外键是其主键的一部分”。因此,这将取决于您在设计中使用哪些字段作为键。

标签: mysql


【解决方案1】:

我不知道我是否准确回答了您的问题,尤其是考虑到您的身份和非身份关系。

从你所说的看来,Status 表和 Promotion 表是我所说的可以链接到 User 表的参考表在(使用实体关联模型)1-n 关系上,这意味着 User 表中有一个引用状态 ID 的外键和另一个引用促销 ID(这意味着您不想要任何历史记录)- - 可能是关于促销的 0-n

news 表通过同一个关系王链接到 User,在 User 表端具有 n 基数(这意味着 News 中的外键引用用户 id 的表,将 Comment 表同上,外键引用 cmets 表内的新闻 id 的新表

关于 Rating 表,不用多想,我会说它来自 User 和 Comment 的关联,具有 n-n 关系。结果:一个带有 user_id 和 comment_id 外键的表......评论的评级是对评级表进行操作的结果,但为了更快,您可以在评级表上触发一个说每次添加评级时一个评论你计算新的评分,你可以在评论表中推送一个字段

【讨论】:

  • 我(我认为我)可以关注你的故事,但我仍然对识别与非识别关系感到头疼。无论如何,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
相关资源
最近更新 更多