gpt4 book ai didi

php - 每个元素添加数据库 "sub-table"

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

我不确定“子表”这个词是否合适,所以让我解释一下。

我正在建立一个包含多个项目的网站,现在我在我的 MySQL 数据库中创建了 2 个单独的表:generalplatforms

我现在的目标是将每个项目的数据拆分到这 2 个表中,到目前为止效果很好,但我现在的问题如下:

platforms 表具有以下结构:

ID
Name
URL

我想通过它们的 ID 跟踪每个项目,因此 item #1ID 在所有表中应该相等。

现在,如果我为 item #1 说了 3 个不同的平台,我将在 platforms 表中添加每个元素,但它们的 ID 不匹配。

如果我有多个项目,每个项目都有多个平台,它就会开始看起来非常困惑。

是否可以有一个看起来像这样的表格?

ID
Name
URL

How it currently is How I want it

基本上,希望图像能更清楚地说明这一点;我想要一个将多个元素组合在一起的表格。

这是可能的还是我必须通过为每个项目分配一个辅助非自动递增 ID 并在 PHP 中手动将平台组合在一起来实现?

最佳答案

看起来你有一个一对多的关系。一般来说,这意味着

general 中的一行可以与 platforms 中的零行、一行或多行相关。

platforms 中的一行恰好与 general 中的一行相关。

要实现此设计,请将general 表中的id 值作为外键 存储在platforms 表格。

id
general_id -- foreign key references id in general table
name
url

两个表中的行因共同的值而相关。

  id  general_id  name        url
--- ---------- --------- --------------------------
77 1 Platform1 http://item1.com/platform1
78 1 Platform2 http://item1.com/platform2
79 1 Platform3 http://item1.com/platform3

要让数据库强制引用完整性,您需要使用支持它的存储引擎(例如 InnoDB),并且您可以声明一个约束

ALTER TABLE `platforms` ADD 
`general_id` INT NOT NULL COMMENT 'fk ref general.id' AFTER `id`;

(general_id 列的数据类型必须与 general 表中的 id 列的数据类型完全匹配。)

在您可以强制执行约束之前,新 general_id 列中的值必须与引用列中的值匹配。

定义约束:

ALTER TABLE `platforms`
ADD CONSTRAINT FK_platforms_general
FOREIGN KEY (`general_id`) REFERENCES `general`(`id`)

关于php - 每个元素添加数据库 "sub-table",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31926887/

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