Что такое префикс таблицы? - PullRequest
22 голосов
/ 22 декабря 2010

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

Ответы [ 7 ]

21 голосов
/ 22 декабря 2010

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

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

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

4 голосов
/ 22 декабря 2010

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

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

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

3 голосов
/ 19 сентября 2015

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

3 голосов
/ 22 декабря 2010

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

Это зависит только от вас.

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

2 голосов
/ 06 октября 2015

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

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

1 голос
/ 24 мая 2017

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

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

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

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

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

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

0 голосов
/ 22 декабря 2010

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

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

...