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



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

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

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

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


  • 0


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

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

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

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



#4 fedornabilkin
fedornabilkin
  • Модератор
  • 1 183 сообщений
  • Репутация: 204

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

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

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

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

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


  • 0

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#5 Ixman
Ixman
    Topic Starter
  • Пользователь PRO
  • 3 173 сообщений
  • Репутация: 844

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

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


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

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

  • 0


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

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

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

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



#7 Ixman
Ixman
    Topic Starter
  • Пользователь PRO
  • 3 173 сообщений
  • Репутация: 844

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

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


  • 0


#8 ShowPrint
ShowPrint
  • Пользователь PRO
  • 3 406 сообщений
  • Репутация: 1001

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

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

 

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


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


#9 Ixman
Ixman
    Topic Starter
  • Пользователь PRO
  • 3 173 сообщений
  • Репутация: 844

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

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


  • 0


#10 ShowPrint
ShowPrint
  • Пользователь PRO
  • 3 406 сообщений
  • Репутация: 1001

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

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

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


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


#11 fedornabilkin
fedornabilkin
  • Модератор
  • 1 183 сообщений
  • Репутация: 204

Отправлено 03 Октябрь 2015 - 00:31

я просто чую, то что я хочу не реализуемо

Неправильно чуешь. Я несколько раз так чуял и в итоге реализовывал.

А однажды двоих прогеров заинтересовал и они тоже чуяли, что не реализуемо, а в итоге решили проблему.

 

Кстати, если делать древовидные комменты, я бы добавил поле parent_id в таблицу с комментами.


  • 1

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#12 Ixman
Ixman
    Topic Starter
  • Пользователь PRO
  • 3 173 сообщений
  • Репутация: 844

Отправлено 03 Октябрь 2015 - 10:48

@fedornabilkin, оно так и есть, без этого поля ничего путнего не сделать. Всё что в теме это набросок для примера, на самом деле у меня на одну главную таблицу со статьями завязана ещё туча таблиц с разными данными (рейтинг, скриншоты, комментарии, приложения и т. п.) и поэтому, чтобы не городить кучу кода при удалении всего одной записи, решил всё это дело перевести на внешние ключи. Сейчас вот глянул, без связей нужно сделать 11 запросов на удаление.


  • 0


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


Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
Totti Totti 1-й за Январь
Очков активности: 3 937 6 тем, 87 сообщений, 25 баллов репутации
ТОП самых активных за этот месяц
  • Фотография Megoydagi
    #1

    Megoydagi (24ho.ru)
    Очков активности: 612 5 тем, 53 сообщения, 6 баллов репутации

  • Фотография NataliaAntalia
    #2

    NataliaAntalia (zdorovemedicina.ru)
    Очков активности: 139.5 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #3

    BLIK
    Очков активности: 76.5 Вне конкурса за определение пользователя месяца

  • Фотография magnet
    #4

    magnet (rbfxdirect.com)
    Очков активности: 55.5 2 темы, 31 сообщение, 1 балл репутации

  • Фотография Totti
    #5

    Totti
    Очков активности: 42 Вне конкурса за определение пользователя месяца

  • Фотография albedo
    #6

    albedo (online24news.ru)
    Очков активности: 34.5 1 тема, 20 сообщений, 1 балл репутации

  • Фотография TindrumGM
    #7

    TindrumGM (novosti-land.ru)
    Очков активности: 28.5 5 тем, 4 сообщения, 1 балл репутации

  • Фотография MattCutts
    #8

    MattCutts (dmitrylee.ru)
    Очков активности: 22.5 Вне конкурса за определение пользователя месяца

  • Фотография kolver
    #9

    kolver
    Очков активности: 21 2 темы, 8 сообщений, 1 балл репутации

  • Фотография Владислава Рыкова
    #10

    Владислава Рыкова
    Очков активности: 21 0 тем, 7 сообщений, 2 балла репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 30.01.2020
  • Яндекс выдача: 23.02.2020
Топ 5 участников по репутации

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