Перейти к содержимому


Выбрать шаблон и создать сайт

Вопрос по внешним ключам MySQL

#1 Ixman

Ixman
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432
0

Отправлено 29 Сентябрь 2015 - 18:17

В общем возник вопрос по внешним ключам в базах MySQL.
 
Например, есть три таблицы:
 
articles, comments и связующая их таблица, допустим comments2article с идентификаторами articles и comments 
 
iiEhF56.png
 
В связующей таблице настроены внешние ключи
 
FOREIGN KEY (`aid`) REFERENCES `articles`(`id`) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (`cid`) REFERENCES `comments`(`id`) ON UPDATE CASCADE ON DELETE CASCADE

То есть при таком варианте, если происходит удаление/обновление родительских таблиц по отдельности, то дочерняя (она же связующая) реагирует на изменения. Здесь всё хорошо работает.
 
Но меня интересует такой вопрос, как ещё дополнительно связать внешними ключами таблицу articles и comment через comments2article так,  чтобы удаляя запись из таблицы articles. автоматом удалялись и из comments2article, и из comments. 
 
Сомневался в таком методе, но решил опробовать. Связал внешним ключём  таблицу comments
 
FOREIGN KEY (`id`) REFERENCES `comments2article`(`cid`) ON UPDATE CASCADE ON DELETE CASCADE
 
Но как и думалось, так работать не будет.
 
Есть ли решение для такой проблемы?

 

 

Сообщение отредактировал Ixman: 29 Сентябрь 2015 - 18:25

  • 0

#2 Ixman

Ixman
    Topic Starter
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 01 Октябрь 2015 - 19:37

Эх печаль беда, столько же спецов здесь крутится. Не ужели никто не использует внешние ключи? Или все сидят на фреймворках и нифига не соображают?


  • 0

#3 Evgeniy3200

Evgeniy3200
  • Пользователь PRO
  • 1 145 сообщений
  • Репутация: 264

Отправлено 01 Октябрь 2015 - 22:17

нифига не соображают
к примеру, это про меня :D  за то честно :)  
  • 0

Если вы можете наугад в полной темноте пробраться к собственной кровати, ни разу не ушибившись, значит, пора путешествовать!



#4 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 02 Октябрь 2015 - 14:45

Например, есть три таблицы:

Я, к сожалению, даже на фрейморках не сижу. Внешними ключами не пользовался никогда, хотя бывает необходимость. Наверно не знаю как это делать.

Но у меня вопрос возник. Какой смысл третьей таблицы  comments2article? По логике ведь достаточно удобно в таблицу комментариев добавить поле article и писать туда айди статьи.

При удалении статьи, удалять все комменты с айди статьи удаляемой. Или это вообще прошлый век?


  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#5 Ixman

Ixman
    Topic Starter
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 02 Октябрь 2015 - 16:25

@fedornabilkin,  такой подход не производительный, не удобный в использовании. У меня древовидная структура комментариев с неограниченной вложенностью, так что мне только через промежуточную таблицу. Да sql запросы так удобней формировать.


@Evgeniy3200
Ну я явно про людей умеющих программировать ))

Сообщение отредактировал Ixman: 02 Октябрь 2015 - 17:04

  • 0

#6 Evgeniy3200

Evgeniy3200
  • Пользователь PRO
  • 1 145 сообщений
  • Репутация: 264

Отправлено 02 Октябрь 2015 - 16:29

Ну я явно про людей умеющих программировать ))
а я ответил, чтобы знал, что тебе всегда готов помочь по мере своих знаний и компетентности :)
  • 1

Если вы можете наугад в полной темноте пробраться к собственной кровати, ни разу не ушибившись, значит, пора путешествовать!



#7 Ixman

Ixman
    Topic Starter
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 02 Октябрь 2015 - 17:04

@Evgeniy3200, спасибо на добром слове :)  


  • 0

#8 ShowPrint

ShowPrint
  • Пользователь PRO
  • 1 701 сообщений
  • Репутация: 405

Отправлено 02 Октябрь 2015 - 17:13

@Ixman, присоединяюсь к @Evgeniy3200, поверь: отсутствие возможности помочь при наличии большого желания - тоже достаточно сложное испытание в жизни... ;)

 

В мыслях была у меня надежда на @fedornabilkin и @yury более/менее регулярно появляющихся, но... Кому-кому а тебе, в решении этого вопроса могут помочь или редко появляющиеся (кого я еще плохо знаю) или не здесь... (а например на sql-ном форуме)


  • 1
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#9 Ixman

Ixman
    Topic Starter
  • Пользователь PRO
  • 2 159 сообщений
  • Репутация: 432

Отправлено 02 Октябрь 2015 - 17:32

@ShowPrint, не люблю просто регистрироваться на чуждом мне форуме ради одного вопроса, я просто чую, то что я хочу не реализуемо. Но всё же решил спросить, здесь есть опытные люди, но действительно редко появляются. Пока обойдусь по старинке буду удалять дополнительными запросами, хотя хотелось бы всё одним  :)


  • 0

#10 ShowPrint

ShowPrint
  • Пользователь PRO
  • 1 701 сообщений
  • Репутация: 405

Отправлено 02 Октябрь 2015 - 17:40

@Ixman, понимаю, сам такой...  :huh:

Читал опытных людей, но они как-то появляются здесь "от случая к случаю", а из регулярных - именно в вопросах коддинга более знающих чем ты и Юрий я не припоминаю... Поэтому уверен: если желаемое - реализуем, то ты "его сделаешь"...  :rolleyes:


  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru