Как правильно называть таблицы в бд

от admin

Как правильно именовать таблицы, столбцы в базе данных?

Советую почитать книгу «Совершенный код» Стива Макконнелла. Она относится больше к проектированию и программированию и данной темы касается только частично, но зато она прививает мышление, что подход к именованию (конвенции именования) нужно выработать заранее и дальше следовать им. А уже какие конвенции выбрать зависит от проекта и разработчиков. Главное, чтобы они были удобны и эффективны в использовании в данном проекте.

Если кратко: Нужно решить заранее каким правилам следовать и следовать им неотступно в конкретном проекте. От проекта к проекту конвенции именования могут отличаться, и это нормально.

Правила составления имен в MySQL

Работая с базами данных мы постоянно обращаемся как к самим БД, так и к их составляющим. Для избежания ошибок, связанных с синтаксически неверным наименованием элементов, мы рассмотрим в этой статье какие существуют правила и ограничение на создание имен в MySQL.

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

Профессиональная приемка квартиры в новостройке в Москве и области.

  • Ограничения по набору символов, которые могут быть использованы
  • Ограничения по количеству символов
  • Контекст в котором используется имя
  • Режим в котором работает сервер, на котором расположена наша СУБД

Теперь рассмотрим их подробнее:

Символы, которые мы можем использовать

К допустимым относят:

  • Все цифры и буквы, которые используются и корректно распознаются на сервере
  • Значок доллара «$»
  • Значок нижнего подчеркивания «_»

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

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

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

К ограничениям имен баз данных и таблиц помимо двух вышеперечисленных относится следующие:

  • Запрещено использовать в именах точки. Даже если имя заключено в кавычки. Это связанно с тем, что сервер считывает точку как специальный разделитель, что в конечном итоге ведет к ошибкам.
  • Запрещено использовать слеши « /» «\». При их появлении в имени появляется ошибка связанная с тем, что сервер некорректно считывает символы запрещенные в именах файлов и каталогов операционных систем, на которых он работает.

Длина, которой могут достигать имена

  • 64 символа — максимально допустимый размер для имен БД, таблиц, столбцов и индексов.
  • 256 символов — максимально допустимый размер для псевдонимов.

Обращения по именам (квалификаторы)

Базы данных

Выбрать вариант обращения к БД проще всего, поскольку он у нас всего один — просто указание имени…

Таблицы
  • Обращение к таблице по полностью квалифицированному имени:
Столбцы
  • Аналогично таблицам мы можем использовать в обращении полностью квалифицированное имя: При таком варианте у нас в запросе четко определены как БД, так и таблица со столбцом к которым мы обращаемся: db_name.tbl_name.col_name
  • При использовании частично квалифицированного имени мы указываем таблицу и столбец, но не указываем БД: tbl_name.col_name
  • Не квалифицированные имена. Это наиболее распространенная форма запросов, поскольку необходимости в их полной квалификации зачастую просто нет. Стоит только помнить, что в обработке запроса будет участвовать текущая БД. Для доступа к данным из другой БД нам нужны более квалифицированные запросы.

Режим работы сервера

Если при запуске сервера были заданы параметры —ansi или —sql-mode=ANSI_QUOTES при составлении имен могут быть использованы и обычные двойные кавычки «”».

Допустимые названия таблицы в базе данных MySQL

подскажите как можно называть таблицу в БД, к примеру.

из примера, какие названия допустимы а какие нет?

Есть различия в допустимых обращениях: вы не сможете написать

Подразумевая таблицу с именем prefix.table . Разделение точкой разделяет имя базы, схемы данных и имя таблицы (в терминологии mysql схемы данных не реализованы). Вы должны будете указывать имя таблицы в специальных кавычках:

Читать:
Залили клавиатуру на ноутбуке что делать часть кнопок не работает

Либо, если sql_mode установлен в соответствие стандарту ANSI_QUOTES :

Касательно использования имён в разных регистрах — есть нюансы в зависимости от используемой файловой системы.

В итоге имена с точками всегда требуют использования кавычек и при их отсутствии дадут ошибку отсутствия базы данных или таблицы. Плюс будут удивлять читающих ваши запросы. Регистрозависимые имена таблиц могут вызвать проблемы при переносе на другую файловую систему. Имена же в нижнем регистре с использованием нижнего подчёркивания для разделения слов используются часто, соответствуют стандарту SQL и проблем как правило не вызывают. Я написал «как правило» потому что всё-таки могут попадаться в списках зарезервированных слов — такие имена тоже можно использовать, но обращаться к ним возможно только с использованием кавычек.

Как правильно называть таблицы в бд

Для всех имен баз данных, таблиц, столбцов, индексов и псевдонимов в MySQL приняты одни и те же правила.

Следует отметить, что эти правила были изменены, начиная с версии MySQL 3.23.6, когда было разрешено брать в одиночные скобки «’ идентификаторы (имена баз данных, таблиц и столбцов). Двойные скобки `»‘ тоже допустимы — при работе в режиме ANSI SQL (see section 1.9.2 Запуск MySQL в режиме ANSI).

Идентификатор Максимальная длина строки Допускаемые символы
База данных 64 Любой символ, допустимый в имени каталога, за исключением `/’ или `.’
Таблица 64 Любой символ, допустимый в имени файла, за исключением `/’ или `.’
Столбец 64 Все символы
Псевдоним 255 Все символы

Необходимо также учитывать, что не следует использовать символы ASCII(0) , ASCII(255) или кавычки в самом идентификаторе.

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

В предыдущих версиях MySQL для имен существовали следующие правила:

  • Имя может состоять из буквенно-цифровых символов установленного в данное время алфавита и символов `_’ and `$’ . Тип кодировки по умолчанию — ISO-8859-1 Latin1, он может быть изменен указанием иного типа в аргументе параметра —default-character-set mysqld (see section 4.6.1 Набор символов, применяющийся для записи данных и сортировки).
  • Имя может начинаться с любого допустимого символа, в частности, с цифры (в этом состоит отличие от правил, принятых во многих других базах данных). Однако имя не может состоять только из цифр.
  • Не допускается использование в именах символа `.’ , так как он применяется для расширения формата имени (посредством чего можно ссылаться на столбцы — см. в этом же разделе ниже).

Не рекомендуется использовать имена, подобные 1e , так как выражение вида 1e+1 является неоднозначным. Оно может интерпретироваться и как выражение 1e + 1 , и как число 1e+1 .

В MySQL разрешается делать ссылки на столбец, используя любую из следующих форм:

Ссылка на столбец Значение
col_name Столбец col_name из любой используемой в запросе таблицы содержит столбец с данным именем.
tbl_name.col_name Столбец col_name из таблицы tbl_name текущей базы данных.
db_name.tbl_name.col_name Столбец col_name из таблицы tbl_name базы данных db_name . Эта форма доступна в версии MySQL 3.22 или более поздних.
`column_name` Имя столбца является ключевым словом или содержит специальные символы.

Нет необходимости указывать префикс tbl_name или db_name.tbl_name в ссылке на столбец в каком-либо утверждении, если эта ссылка не будет неоднозначной. Например, предположим, что каждая из таблиц t1 и t2 содержит столбец c , по которому производится выборка командой SELECT , использующей обе таблицы — и t1 , и t2 . В этом случае имя столбца c является неоднозначным, так как оно не уникально для таблиц, указанных в команде, поэтому необходимо уточнить, какая именно таблица имеется в виду, конкретизировав — t1.c или t2.c . Аналогично, при выборке данных из таблицы t в базе данных db1 и из таблицы t в базе данных db2 необходимо ссылаться на столбцы в этих таблицах как на db1.t.col_name и db2.t.col_name .

Выражение .tbl_name означает таблицу tbl_name в текущей базе данных. Данный синтаксис принят для совместимости с ODBC, так как некоторые программы ODBC ставят в начале имен таблиц в качестве префикса символ `.’ .

Похожие статьи