gpt4 book ai didi

mysql - 改变mysql数据库设计?

转载 作者:行者123 更新时间:2023-11-29 22:45:05 24 4
gpt4 key购买 nike

好吧。最近,我在为我的小网站进行简单编码时遇到了一些问题。目前我有这个数据库设计。

CREATE TABLE IF NOT EXISTS `posts` (
`post_id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`uid` int(11) NOT NULL,
`topic` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`content` text COLLATE utf8_unicode_ci NOT NULL,
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`ip` varchar(39) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0.0.0.0',
`hashtag` VARCHAR(255),
PRIMARY KEY (`post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;


CREATE TABLE IF NOT EXISTS `comments` (
`comment_id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`uid` INT(11),
`post_id_fk` int(11) NOT NULL,
`content` text COLLATE utf8_unicode_ci NOT NULL,
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`ip` varchar(39) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0.0.0.0',
`hashtag` VARCHAR(255),
FOREIGN KEY(post_id_fk) REFERENCES posts(post_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

正如你所看到的,我必须联合和连接表来获取信息,并且在外键方面遇到了很多麻烦。

将数据库设计更改为:

CREATE TABLE IF NOT EXISTS `comments` (
`comment_id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`uid` INT(11),
`comment_id_fk` int(11) NOT NULL,
`topic` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`content` text COLLATE utf8_unicode_ci NOT NULL,
`date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`ip` varchar(39) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0.0.0.0',
`hashtag` VARCHAR(255),
FOREIGN KEY(comment_id_fk) REFERENCES (comment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

因此评论可以充当“帖子”,也可以充当评论。如果可以将外键留空。或者外键可能根本就没有必要?

这是要走的路吗?或者我应该继续使用两张 table ?

最佳答案

这些结构完全不同,您没有提供足够的信息来回答问题。以下是两个重要的区别:

  • 第二个结构允许对注释进行注释并允许它们嵌套。第一个要求评论必须在帖子上,并且帖子不能嵌套。
  • 第二个将主题复制到评论中。这意味着评论的主题可能与相应帖子的主题不同。这可能是好是坏。我只是指出它是不同的。

这些是重要的设计考虑因素。您的问题没有提供足够的信息让外人判断哪个更接近您的实际意图。

作为一般规则,我会偏向第一种方法,因为我认为“帖子”和“评论”是两个不同的事物,因此值得成为单独的实体。例如,在 Stack Exchange 中,帖子(“问题”)有标签而评论没有,帖子有标题而评论没有,评论有长度限制,而帖子没有。

关于mysql - 改变mysql数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29181784/

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