2017-02-19 3 views
0

Когда я создавал базу данных, содержащую две таблицы (Topics и Categories, где каждая тема классифицирована) Я не беспокоился, как правильно моделировать связь между этими двумя таблицами потому что я был очень неопытен с MySQL и базами данных в целом.Добавить связь между двумя существующими/заполненными таблицами в MySQL

Мой простой подход состоял в том, чтобы просто вставить имя категории в столбец Category таблицы Topics.

Теперь, когда мне нужно изменить названия некоторых категорий, я сожалею об этом решении, потому что, просто изменив его, я должен усвоить все соответствующие записи в таблице Topics. Это легко сделать с помощью правильных операторов MySQL, но это очень грязное решение.

Так что мне интересно, возможно ли добавить предполагаемое отношение к существующим таблицам. До сих пор я пробовал некоторые подходы, которые я нашел в похожих темах, но большинство из них касалось других проблем. Это может помочь, что столбец категории Topics и столбец имен Categories имеют одинаковые значения: имя категории.

Тема:

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

Категория:

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

Я благодарен за каждое решение или наконечник и быть в командной строке или PHPMyAdmin!

ответ

1

Добавить идентификатор Категории:

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

Добавить категорию идентификатор Темы:

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

Затем обновите идентификатор категории, основываясь на категории:

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

После проверки все хорошо, измените любой код, ссылающийся на topics. Category с JOIN для подключения таблиц и использования categories. Name, а затем удалите categories. Name раздел.

Смежные вопросы