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

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

7 ответов


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

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

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


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

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

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


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

это полностью зависит от вас.

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


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

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


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

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


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

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

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

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

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

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


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

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