powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Не понимаю связи
6 сообщений из 6, страница 1 из 1
Не понимаю связи
    #38884009
timedo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Есть бд с 3 таблицами, это Avtor, Opros и Qwestions вот с такой связью:

http://i10.pixs.ru/storage/5/2/2/SnimokPNG_3045196_16116522.png

В таблице Opros у меня есть 3 опроса:

http://i10.pixs.ru/storage/5/3/5/pollPNG_3405755_16116535.png

В таблице Qwestions есть к каждому опросу по одному вопросу:

http://i10.pixs.ru/storage/5/5/9/quPNG_5871640_16116559.png

К примеру я хочу удалить один из опросов, для этого удаляю сначала все вопросы с опроса под id 6 :

http://i10.pixs.ru/storage/5/7/2/quDellPNG_3471186_16116572.png

И удаляю в таблице опросов(Opros), опрос с id 6

http://i10.pixs.ru/storage/6/0/0/dellPollPN_2680922_16116600.png

Но происходит что то не предвиденное и удаляются все вопросы с опросов, т.е. в таблице Qwestions после этого ничего не содержится. Почему так происходит, объясните пожалуйста

http://i10.pixs.ru/storage/6/5/0/questPNG_5637043_16116650.png
...
Рейтинг: 0 / 0
Не понимаю связи
    #38884036
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если присутствуют только картинки (видимо, все делалось кликами мышой) и нет ни строчки текста, то почему вопрос в форуме Программирование? :)
...
Рейтинг: 0 / 0
Не понимаю связи
    #38884048
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для картинок есть тэг img (в дополнительных)

У тебя лишняя связь (opros.teachid - qwestions.teachid) с каскадным удалением. Удали ее. Должно быть (avtor.teachid - qwestions.teachid)

timedoЗдравствуйте. Есть бд с 3 таблицами, это Avtor, Opros и Qwestions вот с такой связью:



В таблице Opros у меня есть 3 опроса:



В таблице Qwestions есть к каждому опросу по одному вопросу:



К примеру я хочу удалить один из опросов, для этого удаляю сначала все вопросы с опроса под id 6 :



И удаляю в таблице опросов(Opros), опрос с id 6



Но происходит что то не предвиденное и удаляются все вопросы с опросов, т.е. в таблице Qwestions после этого ничего не содержится. Почему так происходит, объясните пожалуйста

...
Рейтинг: 0 / 0
Не понимаю связи
    #38884073
timedo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уппссс...сори, вот так будет более понятно:



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
-- Структура таблицы `avtor`
--
 
CREATE TABLE IF NOT EXISTS `avtor` (
  `TeachId` int(11) NOT NULL AUTO_INCREMENT,
  `Login` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `Password` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `Name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `Lastname` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`TeachId`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=36 ;
 
 
--
-- Структура таблицы `opros`
--
 
CREATE TABLE IF NOT EXISTS `opros` (
  `TestId` int(11) NOT NULL AUTO_INCREMENT,
  `TeachId` int(11) DEFAULT NULL,
  `TestName` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `GroupName` int(11) NOT NULL,
  PRIMARY KEY (`TestId`),
  KEY `TeachId` (`TeachId`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
 
--
-- Структура таблицы `qwestions`
--
 
CREATE TABLE IF NOT EXISTS `qwestions` (
  `QwestionsId` int(11) NOT NULL AUTO_INCREMENT,
  `TeachId` int(11) DEFAULT NULL,
  `TestId` int(11) DEFAULT NULL,
  `Text` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`QwestionsId`),
  KEY `TestId` (`TestId`),
  KEY `TeachId` (`TeachId`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;
 
-- --------------------------------------------------------
 
--
-- Ограничения внешнего ключа таблицы `opros`
--
ALTER TABLE `opros`
  ADD CONSTRAINT `opros_ibfk_1` FOREIGN KEY (`TeachId`) REFERENCES `avtor` (`TeachId`);
 
--
-- Ограничения внешнего ключа таблицы `qwestions`
--
ALTER TABLE `qwestions`
  ADD CONSTRAINT `qwestions_ibfk_1` FOREIGN KEY (`TestId`) REFERENCES `opros` (`TestId`),
  ADD CONSTRAINT `qwestions_ibfk_2` FOREIGN KEY (`TeachId`) REFERENCES `opros` (`TeachId`) ON DELETE CASCADE ON UPDATE CASCADE;
...
Рейтинг: 0 / 0
Не понимаю связи
    #38884078
timedo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, спасибо большое за ответ! А почему там не нужна эта связь?
...
Рейтинг: 0 / 0
Не понимаю связи
    #38884113
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timedoDima T, спасибо большое за ответ! А почему там не нужна эта связь?
Потому что связь нужна для контроля целостности, поэтому она должна быть между таблицей с первичным ключом к таблице где этот ключ используется.

Подробности в любой книжке по теории реляционных СУБД.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Не понимаю связи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]