Тема: связь между составными ключами

Помогите пожалуйста.
Допустим есть база из двух таблиц, в которых составные ключи. Если , допустим, из таблицы №1 вести связь в таблицу №2, то получается что весь ключ переходит в таблицу №2 ( если мыслить логически). В phpMyAdmin  я сделала так,что от каждого атрибута протянула связь к другому атрибуту между таблицами. Но у меня возникла вот такая проблема. Когда в таблице №2 я выбираю в атрибуте1 например

2

Re: связь между составными ключами

Допустим есть база из двух таблиц, в которых составные ключи. Если , допустим, из таблицы №1 вести связь в таблицу №2, то получается что весь ключ переходит в таблицу №2 ( если мыслить логически). В phpMyAdmin  я сделала так,что от каждого атрибута протянула связь к другому атрибуту между таблицами. Но у меня возникла вот такая проблема. Когда в таблице №2 я выбираю в атрибуте1 например "четверг", то по логике он должен мне в атрибуте2 таблицы №2 предложить только допустим  "математика", но он  мне выдает в атрибуте2 все значения которые хранятся в атрибуте2 таблицы №1. Например "математика", "русский", "физика". Помогите пожалуйста.
П.С. Схема точна,так как делала с преподавателем очень хорошим.
П.П.С. Извините,если не слишком понятно объяснила. Старалась как могла  roll

3

Re: связь между составными ключами

К сожалению я не смог понять. Попробуйте привести пример структур таблиц с парой строк данных в каждой; и по каким полям они связаны.

4 (изменено: Simonya6ka, 2012-05-31 14:29:31)

Re: связь между составными ключами

это вот пример в ErWin.
http://s2.ipicture.ru/uploads/20120531/UcI5Qntw.png
это пример в MyAdmin
http://s1.ipicture.ru/uploads/20120531/YNj36nmJ.png

Поля заполненные для таблицы map:
http://s1.ipicture.ru/uploads/20120531/iiyh5Ki7.png
Вот теперь объясню
Получается что при заполнении таблицы mapofdriver полей №karty и №marshruta не саблюдается например вот такое, что если выбираем поле №karty например  1 то он должен в поле №marshruta предложить только 14 и 53, но он выдает все какие есть №marshruta из таблицы route
вот скин: тут вот видно что он предлагает и 23,хоть и не должен. И кстати ошибку не выдает даже при нажатии ок
http://s1.ipicture.ru/uploads/20120531/f6YRaTu5.png

5

Re: связь между составными ключами

Насколько я вижу, все верно. Для таблицы map предлагаются все возможные значения, а уж как вы их свяжете - это ваше решение. Никаких ограничений не задано и я даже не знаю как их можно задать. Ограничения вы получите при выборе данных, то есть при создании запроса с группировкой по необходимому полю.

6

Re: связь между составными ключами

Никаких предложений по ограничениям не всплывает. Прописываю вручную запрос на создание связи вот например вот такой :

ALTER TABLE mapofdriver
    ADD (CONSTRAINT R_4 FOREIGN KEY (№karty, №marshruta) REFERENCES map (№karty, №marshruta));

Программа говорит что создана, а на самом деле нет и эту связь записывает почему  то вот сюда
http://s2.ipicture.ru/uploads/20120531/QXOr56nU.png

7

Re: связь между составными ключами

Тип таблиц InnoDB?

8

Re: связь между составными ключами

Hanut сказал:

Тип таблиц InnoDB?

Нет. Стоит стандартно MyISAM
А можно за одно обьяснить мне разницу между этими типами?) roll

9

Re: связь между составными ключами

Simonya6ka сказал:

Нет. Стоит стандартно MyISAM

Дело в том, что информацию о внешних ключах могут хранить только таблицы типа InnoDB, для таблиц типа MyISAM роль хранения связей выполняет phpMyAdmin, поэтому данные связи ограничены по функционалу.

Документация по FOREIGN KEY