gpt4 book ai didi

mysql - 表成表行

转载 作者:行者123 更新时间:2023-11-29 13:27:46 26 4
gpt4 key购买 nike

> Table 1 : Category :id   , Name          :1     Hardware 2     Software
>
> Table2 Hardware : id , Name :1 Hard disck . . . .
>
> Table 3 Software :id , Name :1 Java . . . .

我的数据库中有这些表,我想通过选择用户可以观看其他表的类别来显示类别,但我不知道执行此操作的正确方法是什么!特别是用户是否可以动态添加新类别以及如何动态创建新类别表!!!

最佳答案

停止。不要为每个类别创建表。从一开始就使用正确的架构设计。通过允许您正常维护和查询数据,它将带来巨大的返回。

在您的情况下,架构可能看起来像

CREATE TABLE categories
(
category_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
category_name VARCHAR(128)
);

CREATE TABLE items
(
item_id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
category_id INT,
item_name VARCHAR(128),
FOREIGN KEY (category_id) REFERENCES categories (category_id)
);

插入新项目并将其与类别关联

INSERT INTO items (category_id, item_name)
VALUES (1, 'Hard disk');
INSERT INTO items (category_id, item_name)
VALUES (2, 'Java');

获取硬件类别中的项目

SELECT item_id, item_name
FROM items i JOIN categories c
ON i.category_id = c.category_id
WHERE c.category_name = 'Hardware'

或者轻松获取每个类别的项目数量

SELECT category_name, COUNT(item_id) no_items
FROM categories c LEFT JOIN items i
ON c.category_id = i.category_id
GROUP BY c.category_id, c.category_name;

这里是SQLFiddle 演示

如果一个项目可能属于不同的类别,那么您将需要一个多对多表categories_items

关于mysql - 表成表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19902526/

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