Что такое префикс таблицы?

Что такое префикс таблицы, и каковы их преимущества и недостатки? Это что касается MySQL.


person alioygur    schedule 22.12.2010    source источник
comment
Вы имеете в виду префикс имени таблицы, такой как tblTasks, или схему, например dbo.tasks?   -  person Robb    schedule 22.12.2010
comment
Префикс таблицы — это префикс, который добавляется к каждому имени таблицы, как следует из названия.   -  person Mathias Lykkegaard Lorenzen    schedule 14.07.2014


Ответы (7)


Это часто используется, чтобы отличить разные установки одного и того же скрипта друг от друга. Например, предположим, что у вас есть две установки Joomla с разным содержимым на вашем сервере, но только одна база данных MySQL.

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

Используя различные префиксы таблиц, вы можете сообщить установке Joomla #1, что предполагается использовать всю таблицу с префиксом JOS_, а установке Joomla #2 нужно использовать все таблицы с префиксом JOS2_.

person Community    schedule 22.12.2010

Таблицы не требуют префиксов.

Это зависит исключительно от вас.

Однако мы ставим перед таблицами префикс относительно МОДУЛЕЙ в приложении, которому они принадлежат, просто для того, чтобы упростить группировку таблиц.

person Adriaan Stander    schedule 22.12.2010

Некоторые люди поддерживают tbl или tbl_ (например, tbl_MyTable или tblMyTable), в то время как другие используют суффикс, такой как MyTable_T.

Лично я избегаю префиксов/суффиксов. Я могу заменить представление на таблицу, если схема меняется с течением времени, поэтому я не различаю два типа объектов.

Самое главное, чтобы ваши правила именования были задокументированы в вашей команде, и вы все придерживались одного и того же набора правил для согласованности.

person Chris W    schedule 22.12.2010

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

Например. t_user или t_order теперь возможны.

person Tommy    schedule 06.10.2015
comment
Вы можете использовать любое имя для таблицы mysql, например CREATE TABLE `DROP DATABASE webshop;` (`value` INT) - person Dávid Horváth; 21.04.2016

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

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

Однако обязательно рассматривайте префиксы таблиц как очень второстепенный уровень безопасности. Это НЕ должно быть вашим основным методом безопасности. Вам по-прежнему следует принимать другие более важные меры безопасности для предотвращения SQL-инъекций и других подобных угроз. Например, в зависимости от того, как настроен ваш код, хакер все еще может запустить команду «показать таблицы» с помощью SQL-инъекции, чтобы получить имена таблиц вашей базы данных.

person kojow7    schedule 19.09.2015
comment
Безопасность через неизвестность не является безопасностью. Это иллюзия безопасности. - person Mariusz Jamro; 04.01.2019
comment
@MariuszJamro Ты вообще читал мой ответ? Кроме того, не всякая неизвестность — это просто иллюзия безопасности. Например, я просто уехал в отпуск и спрятал часть своей техники где-то у себя дома в очень труднодоступном месте. Может ли кто-нибудь в конце концов выяснить, где это было? Абсолютно. Добавляет ли это дополнительный уровень безопасности? Абсолютно. Является ли это иллюзией безопасности только потому, что она затемняет ее? Точно нет. - person kojow7; 04.01.2019
comment
Это иллюзия, потому что вы чувствуете себя в большей безопасности, хотя на самом деле это не так. На самом деле это не помешает никому перепроектировать структуру вашей БД и выяснить, что на самом деле хранятся/делают конкретные таблицы. - person Mariusz Jamro; 06.01.2019
comment
@MariuszJamro Опять же, ты вообще читал мой ответ? Я уже упомянул вашу озабоченность в своем ответе. - person kojow7; 06.01.2019
comment
Я сделал, и я понимаю ваши рассуждения. Я просто считаю это неправильным в контексте этого вопроса. Префиксы таблиц бесполезны в целях безопасности, поскольку их использование не обеспечивает дополнительной безопасности. Вы только усложняете себе жизнь. - person Mariusz Jamro; 08.01.2019
comment
Несколько лет назад ходили различные черви, которые просматривали уязвимые сайты WordPress, извлекали и манипулировали таблицей wp_users. В этих случаях те, кто использовал другой префикс, не были затронуты этими червями. И хотя наличие другого префикса было слабой мерой безопасности, тем не менее, это была мера безопасности. В то время как лучшей безопасностью для разработчиков WordPress было бы полное устранение всех шансов внедрения SQL, конечные пользователи не должны предполагать, что это так. - person kojow7; 08.01.2019

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

Вы часто видите префиксы таблиц в ситуациях, когда:

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

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

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

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

person Scott M. Stolz    schedule 24.05.2017

Это может помочь различать таблицы и представления в зависимости от вашего соглашения об именах.

Недостатком является то, что вы можете быть ограничены в том, что касается имени таблицы. Oracle имеет для этого ограничение в 30 символов. Если вы используете «Tbl_» в качестве префикса, вы автоматически теряете 4 символа. Это может быть проблемой.

person sjngm    schedule 22.12.2010