У меня есть два стола для многоязычных статей. В первой таблице у меня нет текстовых столбцов (id, authorid, date и т. Д.). Во второй таблице у меня есть текстовые столбцы (заголовки, контент и т. Д.).MySQL - будет ли первичный ключ создавать еще один индекс, если столбец уже проиндексирован?
Для каждой строки в первой таблице я могу иметь много строк во второй таблице. Например, для статьи, переведенной на три языка, у меня три строки в таблице 2.
В таблице 2 столбец (id) имеет внешний ключ к таблице 1, поэтому он уже проиндексирован. Я не могу установить идентификатор столбца для таблицы 2, так как ясно, что он не уникален. Тем не менее, я не могу редактировать данные из таблицы 2 в workbench, поскольку он говорит - нет первичного ключа или не нулевого уникального ключа.
То, что я говорю в схеме:
Table1{
id
date
authorId
}
Table2{
id
title
content
languageId
}
Так что ответ - если я создаю первичный ключ для столбца (ID) в таблице 2 - будет MySQL создать еще один индекс для этого столбца?
Возможно, у вас должен быть столбец «id», а также столбец «table1ID» (или какое-то такое имя), которое на самом деле будет вашим текущим столбцом «id». Затем сделайте 'id' основным ключом и сделайте' table1ID' внешним ключом. –
Индекс связан с первичным ключом, поэтому да, добавление первичного ключа добавит индекс (и в InnoDB также повлияет на хранение строк). –
Почему у вас не было первичного ключа во второй таблице? просто добавьте столбец для него. но да, он добавит индекс - [** Еще один вопрос SO **) (http://stackoverflow.com/questions/1071180/is-the-primary-key-automatically-indexed-in-mysql) –