gpt4 book ai didi

mysql - 一张表是否应每隔一张表引用一次

转载 作者:行者123 更新时间:2023-11-29 00:55:49 24 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序定期从大量网站收集信息并将其保存到 mysql 数据库中,每个网站都有一个表。这个想法是创建一种可定制的新闻提要。

  • stackoverflow_table(id, url, title, date)
  • reddit_table(id, title, url, author, date)
  • github_commit_table(id,commit_message,作者,存储库,分行、日期)
  • twitter_table(id, tweet, author, url, date)
  • 等...

我希望能够请求任意数量的新闻项目并过滤掉某些网站。例如:

显示最新的 100 个项目,但排除来自 Twitter 和 GitHub 的项目。

处理这个问题的最好方法似乎是创建一个只有外键和网站名称的表。

master_table(id, website, date, foreign_key)

我可以从这个表中查询我需要的外国 ID。

我是不是错得很厉害?

最佳答案

我实际上一直在一个类似的网站上工作。不是针对其他站点,而是一种类似于 Facebook 的站点,适用于具有来自各种来源的新闻源的利基社区。在过去的几周里,我一直在认真思考这个问题。

一个问题,可能不是破坏游戏,但对我来说仍然是一个问题,因为你的 foreign_key 列由于引用了多个表而不是字面上的外键,所以它无法获得受益于诸如参照完整性实现之类的事情。

我正在考虑制作一个 GUID 表作为所有其他表的 ID 源,并有一个专门用于新闻提要的表。它可能被定义为:

CREATE TABLE sources (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20),
url VARCHAR(50) );

INSERT INTO sources (name, url) VALUES ('Stack Overflow', 'http://stackoverflow.com');
INSERT INTO sources (name, url) VALUES ('Reddit', 'http://www.reddit.com');
INSERT INTO sources (name, url) VALUES ('Github', 'http://github.com');
INSERT INTO sources (name, url) VALUES ('Twitter', 'http://twitter.com');
/* And so on... */

CREATE TABLE newsfeed (
guid INTEGER PRIMARY KEY, -- Note: NOT auto_increment!
source_id INTEGER NOT NULL,
timestamp DATETIME NOT NULL,
text VARCHAR(256),
ref_id INTEGER NOT NULL,
FOREIGN KEY (source_id) references sources (id) );

您仍然可以将有关站点发布的信息存储在它们自己的表中,但现在您只是引用一个新闻源表来实际显示在页面上的内容,如果有人想要的话,ref_id 是指向各个源表的指针深入了解信息。它仍然不理想,因为 ref_id 仍然不是真正的外键,但可以说它好一点。

你甚至可能想做这样的事情而不是 ref_id:

data TEXT,

对于任何给定的条目,该列的内容是特定于源的数据有效负载。例如,对于 Github 帖子,它可以包含一个 JSON 字符串,例如:

{"commit_message":"Updated global variable namespace.",
"author":"King Skippus","repository":"Ibuware"}

关于mysql - 一张表是否应每隔一张表引用一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6210198/

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