Администрировнаие реляционных БД

Spear

почемучка
Администрировнаие реляционных БД

Здравтсвуйте,
у меня такая проблемка вознла.. даже скорее не проблема а просто - непонимание.
Есть модуль статей, и каждая статья может относиться к нескольким категориям.
Для этого использовал таку страктуру бд:

статьи
id/title/text

категории
id/name/

связь
artID / catID

Пока все понятно.
Проблема появилась вот в чем:
при добавлении статьи через адмнику делаю просто
while($cats) {
insert into таблица_связи values $art_od, $cats['$i']
}
ну чтото вроде этого. То етсь на каждую категорию заношу 1 запись в БД связи.
А вот как поступить, если статья редактируется? Например когда статью опубликовали, её привязали к 3 и 5ой категориям, а потом подумали решили чот она больше подходит к 2 и 5ой.
пока что представляю себе возможным только полное удаление всех записей из таблицы связей и занесение данных по-новому. Но по-моему выглядит это очень ламерски, поэтому хотел поинтересоваться - может есть более удобный (ака правильный) способ решения этой задачи? Буду очень благодарен за ответы
 

alexhemp

Новичок
Spear

А что не так - удалили связсь с 3 и 5 категорией, добавили потом связь с 2 и 5 ой.

удалили записи, описывающие связи, потом вставили.
 

Romashov

экспериментатор
Тоже сторонник такого варианта как практически единственно правильно-безглючного.
Если есть желание поизвращаться - узнай текущие существующие связи, вставь те, которые были добавлены (поле редактирования минус существующие) и удали те, которые не нашли поддержки при проверке (существующие минус (поле для редактирования в пересечении с существующими)). Булевы операции над множествами.
 

Romashov

экспериментатор
да.
Булевы операции (если не забыл математику) - операции со множествами ;)
 

Dreammaker

***=Ф=***
Единственное, что.. посмотри в сторону SQLвского IN, он тебе может помочь от циклов избавится.
 
Сверху