Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
Здравствуйте!Увидел в одной cms таблицу с 2 первичными ключами.Таблица с отношением many to many.Попытался сделать подобную xthtp phpmyadmin пишет что типа нельзя 2 primary key.Проясните ситуацию пожалуйста.Как и зачем создатели cms это сделали?И что нужно использовать в качестве ключей в данной ситуации?
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 21 Августа, 2013 - 15:20:53
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
jonston
Два первичных ключа быть не может по определению (собственно, ключ потому и первичный, что он является необходимым и достаточным условием для идентификации записи).
Первичный ключ может быть создан по нескольким колонкам, но сама сущность - ключ - всё равно будет одна.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
eai
Отправлено: 21 Августа, 2013 - 15:22:05
Частый посетитель
Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009 Откуда: Петроград
Помог: 10 раз(а)
Вообще первичный ключ один, вторым логическим ключем может быть поле с уникальным индексом. Первичный ключ служит для поддержки целостности.
jonston
Отправлено: 21 Августа, 2013 - 16:03:29
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
EuGen пишет:
jonston
Два первичных ключа быть не может по определению (собственно, ключ потому и первичный, что он является необходимым и достаточным условием для идентификации записи).
Первичный ключ может быть создан по нескольким колонкам, но сама сущность - ключ - всё равно будет одна.
Нужно использовать внешний ключ, индекс, уникальный ключ?И еще будут ли автоматически проставлены индексы если проставить связи?
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
jonston пишет:
Нужно использовать внешний ключ, индекс, уникальный ключ?
Уточните, что значит - "нужно"? Ответ зависит от того, какой атрибут хранит поле и какая логика накладывается на это поле. Если требуется, чтобы значение было уникальным - то - да, нужно создать уникальный ключ по этому полю. Если поле является ссылкой на запись в другой таблице - то создать внешний ключ.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jonston
Отправлено: 21 Августа, 2013 - 17:00:52
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
EuGen пишет:
jonston пишет:
Нужно использовать внешний ключ, индекс, уникальный ключ?
Уточните, что значит - "нужно"? Ответ зависит от того, какой атрибут хранит поле и какая логика накладывается на это поле. Если требуется, чтобы значение было уникальным - то - да, нужно создать уникальный ключ по этому полю. Если поле является ссылкой на запись в другой таблице - то создать внешний ключ.
Внешний ключ == пространственный индекс?
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 21 Августа, 2013 - 17:05:06
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
jonston пишет:
пространственный индекс?
Внешний ключ - означает, что значение поля есть ссылка на запись в другой таблице. Иными словами, он является значением ключа в другой таблице, и, таким образом, по его значению можно восстановить запись в той таблице, на которую он ссылается. Подробнее - смотрите данную статью.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jonston
Отправлено: 21 Августа, 2013 - 19:55:41
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
EuGen пишет:
jonston пишет:
пространственный индекс?
Внешний ключ - означает, что значение поля есть ссылка на запись в другой таблице. Иными словами, он является значением ключа в другой таблице, и, таким образом, по его значению можно восстановить запись в той таблице, на которую он ссылается. Подробнее - смотрите данную статью.
спасибо.То есть если таблица служит для связки двух полей, по это внешний ключ.Это я знаю.Но как он обозначается в phpMyAdmin?
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 21 Августа, 2013 - 21:41:07
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
В pma для того нужно перейти на вкладку "Структура", затем выбрать пункт "Связи"
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
jonston
Отправлено: 22 Августа, 2013 - 03:21:44
Посетитель
Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011
Помог: 3 раз(а)
EuGen пишет:
В pma для того нужно перейти на вкладку "Структура", затем выбрать пункт "Связи"
Еще раз благодарю!А можно ли удалить первичный ключ без применения sql запроса?То есть через pma?
----- $i = 0;
$i = $i++ + ++$i; ?
EuGen
Отправлено: 22 Августа, 2013 - 09:02:33
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Можно через GUI. Напротив ключа должна быть картинка удаления. Но в конечном итоге pma всё так же сделает это через запрос.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.