Каково различие между Индексом и Внешним ключом?

Если Вы принимаете решение пойти с подрывной деятельностью, и Вы хотите разместить свой собственный svn сервер, то существует очень хороший и легкий основанный на окнах сервер под названием сервер VisualSVN. Это скрывает сложность установки апачского сервера, Вы в основном просто идете затем затем затем. Пользовательская конфигурация обрабатывается с webUI вместо конфигурации

http://www.visualsvn.com/server/

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

10
задан Brian Tompsett - 汤莱恩 18 January 2017 в 20:24
поделиться

6 ответов

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

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

14
ответ дан 3 December 2019 в 15:36
поделиться

У вас будут внешние ключи в третьей таблице. Индексы не нужны, они вам нужны, если у вас много данных, по которым вы хотите быстро найти что-то по Id. Возможно, вам понадобится индекс по первичному ключу сообщений, но СУБД, вероятно, создаст его автоматически.

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

5
ответ дан 3 December 2019 в 15:36
поделиться

Индекс добавляется для быстрого поиска данных в таблице. Индекс может иметь ограничения в том смысле, что столбец или столбцы, которые используются для создания индекса, возможно, должны быть уникальными (уникальными: для этого индекса возвращается только одна строка в базе данных, или неуникальными: может быть возвращено несколько строк) . Первичный ключ для таблицы является уникальным индексом и обычно имеет только один столбец.

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

3
ответ дан 3 December 2019 в 15:36
поделиться

Вы описываете очень распространенную конструкцию базы данных; это называется «отношением многие-ко-многим».

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

В Википедии есть отличная статья о том, что такое индексы базы данных: Индекс (база данных)

2
ответ дан 3 December 2019 в 15:36
поделиться

Чтобы использовать внешние ключи в mysql, вам необходимо создать индексы для обеих таблиц. Например, если вы хотите, чтобы поле a_id в таблице b ссылалось на поле id в таблице a , вам необходимо создать индексы для a.id и b.a_id , прежде чем вы сможете создать ссылку.

Обновление: здесь вы можете узнать больше об этом: http: //dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints. html

1
ответ дан 3 December 2019 в 15:36
поделиться

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

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

Posts_Tags-> PostID должны быть значением, содержащимся в сообщениях-> PostID

Posts_Tags-> TagID должен быть значением, содержащимся в Tags-> TagID

Думайте об индексе как о столбце, для которого увеличена скорость и эффективность запросов / поиска значений из него за счет увеличения размера вашей базы данных. Как правило, первичные ключи - это индексы и другие столбцы, которые требуют запроса / поиска на вашем веб-сайте, в вашем случае, вероятно, имя сообщения (Posts-> PostName)

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

за счет увеличения размера вашей базы данных. Как правило, первичные ключи - это индексы и другие столбцы, которые требуют запроса / поиска на вашем веб-сайте, в вашем случае, вероятно, имя сообщения (Posts-> PostName)

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

за счет увеличения размера вашей базы данных. Как правило, первичные ключи - это индексы и другие столбцы, которые требуют запроса / поиска на вашем веб-сайте, в вашем случае, вероятно, имя сообщения (Posts-> PostName)

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

3
ответ дан 3 December 2019 в 15:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: