Здравствуйте! Не могу осмыслить как реализовать тэги к статьям. Имеются 3 таблицы: 1) post с полями id, title, content и т.д 2) tag с полями id, name 3) post-tag с полями id, post_id, tag_id Установлен внешний ключ post.id с полем post-tag.post_id и tag.id с полем post-tag.tag_id (верно, нет не уверен). А далее не пойму как добавлять статьи с тэгами и манипулировать данными(удаление добавление тэгов), так как при добавлении связей не удаётся добавить ни статью ни тэг. При установке ключей наоборот с таблицы post-tag с соответствующими полями вы даётся ошибка - "#1050 - Table '.\database_name\post@002dtag' already exists". Вот собственно на этом и застрял. Сам же пока в Гугле. Нашёл схожие статьи изучаю.
Зачем вообще разделял теги и статьи? Ты мог в той же таблице Post сделать поле keywords типа текст, которое бы мог потом использовать и в meta и в "тегах", что по сути является одним и тем же, за некоторыми исключениями... Но это уже лирическое отступление, раз уж решил разделить, то в чем проблема? Переведи в гугл транслейте текст ошибки и сразу поймешь в чем проблема) Добавлено спустя 2 минуты 31 секунду: Твоя схема данных была рабочей, зачем менять что-то?
Нет, нужно именно так сделать. Да ошибка мне ясна, значит внешние ключи всё же не верно привязаны. А вот как исправить ошибку если для этого удалить поле надо и нарушится структура не ясно мне.
Сообщение об ошибке тебе говорит о том, что ты пытаешься создать таблицу, которая уже существует. В смысле не верно? Насколько я помню в схеме все было нормально. Удали старую - добавляй новую.
Так удалил её, привязывать то не к чему. Чего то я не до понимаю. Обратно же ставится внешний ключ, от tag.id к post-tag.tag_id, а от post-tag.tag_id к tag.id нет.
Покурите отношения в реляционных СУБД, ок? Чтобы быть немного в курсе что и как устроено, что такое внешние ключи и что такое первичные. Вообще немного теории почитайте, будет полезно. И потом, здесь телепатов немного, пробуйте хотя бы чуточку стараться доносить свои мысли. Что, куда, как вы пытались вставить - остается только догадываться. ??? Я ушел
О пробеле в знаниях понимаю. Код (Text): ALTER TABLE `post-tag` ADD FOREIGN KEY ( `tag_id` ) REFERENCES `hh_bd`.`tag` ( `id` ) ON DELETE RESTRICT ON UPDATE RESTRICT ; Ответ MySQL: Документация #1050 - Table '.\hh_bd\post@002dtag' already exists Наоборот Код (Text): ALTER TABLE `tag` ADD FOREIGN KEY ( `id` ) REFERENCES `hh_bd`.`post-tag` ( `tag_id` ) ON DELETE RESTRICT ON UPDATE RESTRICT ; Отрабатывает. И второе поле Код (Text): ALTER TABLE `post` ADD FOREIGN KEY ( `id` ) REFERENCES `hh_bd`.`post-tag` ( `post_id` ) ON DELETE RESTRICT ON UPDATE RESTRICT ; Но в таком случае не удаётся создавать посты и тэги в соответствующих таблицах. Собственно как решить проблему ещё не нашёл. Да видимо и сам принцип всего этого не ясен мне. Далее как добавляя посты и тэги к нему вписывать соответствующие данные в таблицы. Таблица post Таблица tag Таблица post-tag
Смотри, не буду вдаваться в изучение твоей писанины, сегодня мозг просто в ауте. Исходя из твоей задачи, тебе нужно следующее. Post: id - primary key Post-Tag: post_id - foreign key tag_id - foreign key Tag: id - primary key Эта схема будет отображать связь МхМ. Делаешь таблички такого вида, потом в phpMyAdmin переходишь на страницу обзора таблички Post -> нажимаешь ссылочку "вставить" -> заполняешь поля -> нажимаешь "Ok". Твои данные вставятся в таблицу, а вверху страницы отобразится выполненный запрос -> копируешь его и вставляешь его в блокнот. Это запрос вставки записи в таблицу Post. Аналогично делаешь с таблицами Tag и Post-Tag. И все... У тебя есть нужные тебе таблицы, нужные тебе запросы.