gpt4 book ai didi

mysql - RSS feed 与 mySQL 数据库结构集成

转载 作者:行者123 更新时间:2023-11-30 00:08:26 25 4
gpt4 key购买 nike

我有一个主题表,其中包含用户生成的主题和 RSS 生成的主题,但在现有的 mySQL 数据库设置中,当 RSS 提要插入数据库时​​,用户生成的主题字段为 NULL(例如 topic_title),并且当用户添加主题,主题表中的 RSS 字段为 NULL(例如 rss_title 和 rss_source_name)。我的主题表中也有外键,当拉出 RSS 流时,它们会变为 NULL(例如 user_id) - 这会导致数据插入失败,因为 user_id 是外键且不能为 NULL。理想情况下,我希望用户生成的主题和 RSS 主题都存储在主题表中,而不会使字段变为空,但不确定构建现有数据库的最佳方式是什么(下面是一个示例):

  • 类别表
    • cat_id
  • 主题表(应存储所有用户生成的主题和 RSS 生成的主题)
    • 主题_id
    • cat_id
    • topic_title(当 RSS feed 插入数据库时​​变为 NULL)
    • user_id(将 RSS feed 插入数据库时​​变为 NULL - 这会导致数据插入失败,因为 user_id 是外键且不能为 NULL)
    • rss_title(当用户创建内容时变为 NULL)
    • rss_source_name(当用户创建内容时变为 NULL)
  • 评论表
    • comments_id
    • 主题_id
    • comments_title
    • 用户 ID

主题表是否必须分成两个单独的表(一张用于用户生成的表,一张用于 RSS),但这会导致评论表中出现 NULL 问题。有什么建议吗?

最佳答案

如果您希望这些字段为空,只需将它们声明为空即可! SQL 中的 FK 约束检查将空 FK 视为正常。

编辑第 1 部分,由于用户和 rss 主题都具有标题,因此只需一个字段/列而不是两个(一个用于用户,一个用于 rss)。

如果您不希望某个字段为空,那么您必须将其放在单独的表中。有一个表用于存储用户主题 topic_id 和 user_id,另一个表用于存储 RSS 主题 topic_id 和 source_name。然后对所有主题使用一个表,其中包含用户和 rss 主题共享的列,例如 topic_id、title、cat_id 等。每个用户和 rss 主题表都有一个与所有主题表相关的 topic_id FK。这是标准的表子类型。有主题、用户主题和RSS主题。

编辑第 2 部分 FK 不是列或指针。它们是限制。他们说列的值总是显示为其他列的值。

您没有说明评论表的含义。显然,用户创建了一条评论,并且有一个限制,即其 topic_id 是用户或 rss topic_id?现在对共享表有一个 FK。

编辑第 3 部分

以下是上面的表格(为了清晰起见,已重命名):

All_topics(topic_id,title,cat_id)
pk (topic_id)
fk (cat_id) references Category (cat_id)
User_topics(topic_id,user_id)
pk (topic_id)
fk (topic_id) references All_topics (topic_id)
Rss_topics(topic_id,source_name)
pk (topic_id)
fk (topic_id) references All_topics (topic_id)

Comments(comments_id,topic_id,comments_title,user_id)
pk (comment_id)
fk (topic_id) references All_topics (topic_id)

如果添加或删除了 user_topic 或 rss_topic 行,则可以添加或删除主题行及其 topic_id(也包含其标题)。

如果您需要将用户/RSS 标题分开(为什么?),那么用户和 RSS 主题表中就没有全主题标题和 topic_title 和 rss_title。

理想情况下还有一些限制。 (或者表子类型的某些不同设计风格。)

select topic_id from All_topics = select topic_id from User_topics UNION select topic_id from User_topics
NOT EXISTS (select topic_id from User_topics JOIN USING (topic_id) Rss_topics)

没有空值。

关于mysql - RSS feed 与 mySQL 数据库结构集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24309243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com