gpt4 book ai didi

php - 讨论 MySQL 数据库结构

转载 作者:行者123 更新时间:2023-11-29 14:18:25 25 4
gpt4 key购买 nike

我正在进行的项目使用用户创建的多个“墙”进行讨论。

我的问题涉及如何在 MySQL 数据库中对此进行建模。

拥有一个名为“walls”的表,其中包含诸如创建者等信息,以及另一个名为“messages”的表,其中包含每条消息,并通过“wall_id”列来区分其所属位置,这样可行吗?

另外,“messages”表是否应该使用 wall_id 作为索引的主键?或者重复的数字对于主键没有用?

我对“正确的方式”数据库建模相对较新,非常感谢任何建议或可靠的帮助,以提高效率和轻松处理数据。

最佳答案

除了您所说的有关主键的内容之外,您的方法确实是正确的方法。主键必须是唯一的。您可以将多个字段作为主键,但键本身必须是唯一的。

因此您将得到下表。

CREATE TABLE `wall` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT(10) UNSIGNED NOT NULL,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`),
INDEX `user` (`user_id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

CREATE TABLE `user` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

CREATE TABLE `message` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`wall_id` INT(10) UNSIGNED NOT NULL,
`user_id` INT(10) UNSIGNED NOT NULL,
`message` TEXT NOT NULL,
PRIMARY KEY (`id`),
INDEX `wall` (`wall_id`),
INDEX `user` (`user_id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

然后,您可以关联 user_id 上的 user 表和 wall_id 上的 wall

关于php - 讨论 MySQL 数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178650/

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