在MySQL中添加两个现有/已填充表之间的关系

时间:2017-02-19 17:05:43

标签: mysql phpmyadmin foreign-keys

前一段时间我创建的数据库包含两个表(TopicsCategories,其中每个主题都被分类)我没有打扰如何正确建模这两个表之间的关系因为我对MySQL和数据库一般都没有经验。

我的简单方法是只在Category表的Topics列中插入类别名称。

现在我必须更改一些类别名称,我对此决定感到遗憾,因为除了更改它之外,我必须同化Topics表中的所有相关条目。使用正确的MySQL语句可以轻松完成,但这是一个非常混乱的解决方案。

所以我想知道是否仍然可以在现有表格中添加预期的关系。到目前为止,我已经尝试了一些我在类似主题中发现的方法,但大多数都是关于其他问题。 Topics类别列和Categories名称列共享相同的值可能会有所帮助:类别的名称。

主题:

+----+------+----------+------+
| Id | Name | Category | Date |
+----+------+----------+------+

分类

+------+-------------+
| Name | Description |
+------+-------------+

我感谢每个解决方案或提示,无论是命令行还是phpmyadmin!

1 个答案:

答案 0 :(得分:1)

为类别添加ID:

enter code here`ALTER TABLE `categories` ADD `Id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`Id`);

为主题添加类别ID:

ALTER TABLE `topics` ADD `Category_Id` INT NOT NULL AFTER `Name`;

然后根据类别更新类别ID:

UPDATE `topics`, `categories` SET `topics`.`Category_Id` = `categories`.`Id` WHERE `topics`.`Category` = `categories`.`Name`

验证一切正常后,更改引用topicsCategory的所有代码并使用JOIN连接表并使用categoriesName代替,然后删除categoriesName字段。