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



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

#1

Поделиться сообщением #1



Ixman

Ixman
  • Пользователь PRO
  • 2 592 сообщений
  • Репутация: 627
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


robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Faq по Mysql
  2. Познаём MySQL
  3. Простейший поиск по таблице MySQL
  4. Атрибуты полей в MySQL
  5. Внешний ключ

#2

Поделиться сообщением #2



Ixman

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

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

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


  • 0


#3

Поделиться сообщением #3



Evgeniy3200

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

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

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

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



#4

Поделиться сообщением #4



fedornabilkin

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

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

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

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

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

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


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


#5

Поделиться сообщением #5



Ixman

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

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

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


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

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

  • 0


#6

Поделиться сообщением #6



Evgeniy3200

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

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

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

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



#7

Поделиться сообщением #7



Ixman

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

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

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


  • 0


#8

Поделиться сообщением #8



ShowPrint

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

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

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

 

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


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


#9

Поделиться сообщением #9



Ixman

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

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

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


  • 0


#10

Поделиться сообщением #10



ShowPrint

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

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

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

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


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


robot

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


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