Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > CONSTRAINT


Автор: zenerru 15.12.2009, 12:04
Пожалуйста объясните эту строчку [CONSTRAINT [symbol]] FOREIGN KEY

что такое [CONSTRAINT [symbol]] и что за имя имеется ввиду в symbol

Автор: Akina 15.12.2009, 12:53
Цитата(zenerru @  15.12.2009,  13:04 Найти цитируемый пост)
что такое CONSTRAINT 

http://lingvo.abbyyonline.com/ru/Translate?text=constraint&sourcelanguageId=1033&targetlanguageId=1049&openedDictionary=LingvoComputer%20(En-Ru)&isSearch=True&page=1&openedWord=constraint

Цитата(zenerru @  15.12.2009,  13:04 Найти цитируемый пост)
что за имя имеется ввиду в symbol

Ну... имя ключа... чтобы его как-то идентифицировать... скажем в запросах в FORCE KEY...
Спутал symbol и index_name

Автор: Zloxa 15.12.2009, 13:33
Цитата(Akina @  15.12.2009,  12:53 Найти цитируемый пост)
скажем в запросах

маська создает индекс на FК?  smile 

Автор: Akina 15.12.2009, 13:42
Цитата

In the referencing table, there must be an index where the foreign key columns are listed as the first columns in the same order. Such an index is created on the referencing table automatically if it does not exist. index_name, if given, is used as described previously. 

InnoDB allows 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. 

Т.е. должен существовать индекс в реферале. Пусть и с некоторыми вольностями, но обязательно.
Цитата

If the CONSTRAINT symbol clause is given, the symbol value must be unique in the database. If the clause is not given, InnoDB creates the name automatically. 

Т.е. symbol - это уникальный в пределах БД идентификатор ограничения.

Автор: Zloxa 15.12.2009, 13:58
Цитата(Akina @  15.12.2009,  13:42 Найти цитируемый пост)
уникальный в пределах БД идентификатор ограничения

да, и основное назначение, обычно, - возможность дропать, алтерить и т.п.
А в запросах мы можем попытаться использовать индекс, но не FK. Возможно мася умеет идентифицировть индекс по имени fk, возможно индекс создается одноименным, возможно я говорю чушь.
Цитата(Akina @  15.12.2009,  13:42 Найти цитируемый пост)
must be

О как... 
спасибо, буду знать.

В оракле индекс на ссылющейся таблице не требуется и не создается.. и я знаю достаточно много случаев, когда его наличие в принципе избыточно

Автор: Akina 15.12.2009, 14:58
Цитата(Zloxa @  15.12.2009,  14:58 Найти цитируемый пост)
я знаю достаточно много случаев, когда его наличие в принципе избыточно 

Но в первом приближении проверка по констрейну без индекса = фуллскан...

Автор: zenerru 15.12.2009, 16:07
FK и так создает имя автоматом, нафигу уник имя ? код можно привести ? где было бы прописано имя и использовано

Автор: zenerru 15.12.2009, 16:27
Akina, FK и так создает имя автоматом, нафигу уник имя ? код можно привести ? где было бы прописано имя и использовано 

Автор: Zloxa 15.12.2009, 17:28
Цитата(Akina @  15.12.2009,  14:58 Найти цитируемый пост)

Но в первом приближении проверка 

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

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

Автор: Akina 15.12.2009, 18:46
zenerru, чтите ман, там всё написано. Даже лучше, чем я пересскажу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)