MySQL дочерняя таблица должна иметь первичный ключ? - PullRequest
1 голос
/ 03 июня 2011

У меня есть (все InnoDB) родительская таблица tbl1 с первичным ключом some_id и дочерняя (ссылочная) таблица tbl2 с another_id со ссылкой tbl1.some_id в качестве внешнего ключа. tbl2.another_id не является первичным ключом tbl2, поскольку это отношение один ко многим . Должна ли моя дочерняя таблица также иметь первичный ключ - возможно, для целей индексации?

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

Ответы [ 2 ]

1 голос
/ 03 июня 2011

Да, вам нужен первичный ключ на tbl2. Это позволит вам однозначно идентифицировать каждую строку, которая будет полезна для многих целей в будущем. Вы можете прочитать о важности ключей с помощью поиска Google.

0 голосов
/ 03 июня 2011

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

"InnoDB permits a foreign key to reference any index column or group of columns. 
However, in the referenced table, there must be an index where the referenced 
columns are listed as the first columns in the same order."

http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

...