SQL — рекомендации именования

Придерживаться правил именования при разработке, всегда является хоршим тоном, поэтому, мне кажется, в SQL такие правила тоже должны быть.

1. НАИМЕНОВАНИЯ ТАБЛИЦ.

Именование таблиц должно подчиняться следующим правилам: 
Имена таблиц не имеющие родительской таблицы == «Составное строчное имя» отражающее содержимое таблицы. 
Пример:

  • еnterprise (юридические лица);
  • сlient (Корреспонденты);
  • people (физические лица);

Имена дочерних таблиц == имя родительской таблицы + имя дочерней таблицы, разделенные символом подчеркивания. Под «дочерней» понимается такая таблица, из которой, при удалении записи в родительской таблице, удаляются все записи имеющие ссылку на удаляемую запись в родительской таблице. 

Пример:

  • client_account (Счета корреспондентов);
  • client_personnel (Сотрудники корреспондентов)

Имена дочерних таблиц, имеющих строчную часть, но не имеющих собственного имени, формируются из имени родительской таблицы + постфикс “_row”. 

Пример:

  • credit (Документ «Кредиты»);
  • credit_row (Строчная часть документа);
  • credit_penalty (Пени по кредиту);
  • credit_percent (Проценты по кредиту)

2. НАИМЕНОВАНИЯ ПОЛЕЙ ТАБЛИЦ.

Именование полей таблицы должно подчиняться следующим правилам:

  • «Имя поля простого типа» — «Составное строчное имя» отражающее содержимое поля.
  • «Имя поля ссылочного типа» == наименование таблицы, на которую ссылается данное поле + постфикс «_id». Исключение составляют случаи, когда есть несколько ссылок на одну и ту же таблицу. В этом случае имя поля формируется как «Имя поля простого типа» + постфикс «_id».
  • Поля типа «tinyint», принимающие значения 1 или 0 == префикс «flag_» + «Составное строчное имя». «Составное строчное имя» должно отражать содержимое поля, при состоянии флага равному 1.

Пример:

  • client_id (ссылка на таблицу корреспондентов);
  • tax_client_id, estim_client_id (ссылки на таблицу корреспондентов «Client», налогоплательщик, распорядитель сметы);
  • flag_confirm (флаг 1 = утвержден, 0 = не утвержден);
  • comment (комментарий)

Перечень имен полей для обязательного использования, при совпадении назначения полей в таблице.

  • comment — комментарий
  • name — краткое наименование
  • short_name — сокращенное наименование (псевдоним)
  • full_name — полное наименование
  • doc_date — дата документа
  • doc_num — номер документа
  • doc_status — состояние документа
  • date_set — дата утверждения документа
  • date_start — дата начала
  • date_end — дата конца
  • date_update — дата обновления
  • guid — глобальный уникальный идентификатор
  • summa — сумма
  • amount — количество
  • rate — ставка
  • mult — коэффициент

Перечень зарезервированных имен.

  • id;
  • owner_id.

Любая таблица должна иметь первичный ключ — автоинкрементное поле с именем «id». 
Дочерняя таблица должна иметь поле с именем owner_id, внешним ключом (с ограничением целостности «On Delete = Cascade») должна быть связана с родительской таблицей (с полем id).

3. НАИМЕНОВАНИЯ ИНДЕКСОВ.

Именование индексов таблицы должно подчиняться следующим правилам:

«Имя индекса» == «Префикс индекса» + «_» + наименование таблицы + «$» + перечисление имен полей таблицы, участвующих в построении индекса, разделенных символом “$”.

«Префик индекса» может принимать одно из следующих значений:

  • in == обычный индекс;
  • iu == уникальный индекс.

Пример:

iu_credit_penalty$owner_id$doc_num (уникальный индекс в таблице «credit_penalty» по полям «owner_id» + «doc_num»)

4. НАИМЕНОВАНИЯ ОГРАНИЧЕНИЙ ЦЕЛОСТНОСТИ.

Именование ограничения целостности таблицы должно подчиняться следующим правилам: «Ограничение целостности» == «Префикс ограничения целостности» + «_» + наименование таблицы + «$» + пречисление имен полей таблицы, участвующих в построении индекса, разделенных символом “$”. «Префикс ограничения целостности» может принимать одно из следующих значений:

  • pk == PRIMARY KEY
  • fk == FOREIGN KEY
  • ck == CHECK 
  • uk == UNIQUE
  • dk == DEFAULT

Например внешний ключ:

fk_User__id____Comment__userId

Сформирован по формуле:

fk_ ИмяВнешнейТаблицы[__ИмяПоляВнешнейТаблицы] + ____ + ИмяТекущейТаблицы[__ИмяПоляТекущейТаблицы[__...]] 

Приведенный выше пример может быть аналогичен следующему:

fk_User__Comment

но только, если является единственным по отношению к Внешней таблице.

5. НАИМЕНОВАНИЯ ТРИГГЕРОВ ТАБЛИЦ.

Именование триггера таблицы должно подчиняться следующим правилам: «Имя триггера» == “t” + «Префикс типа триггера» + «_» + наименование таблицы. «Префикс типа триггера» может иметь длину от двух до четырех символов.

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

  • a == «after» триггер, срабатывает после обработки SQL-сервером события;
  • b == «before» триггер, срабатывает перед обработкой SQL-сервером события;
  • i == «instead of» триггер, заменяет собой действия SQL-сервера по обработке события.

Второй и (для комбинированного триггера) последующие символы — это комбинация в алфавитном порядке следующих символов:

  • d == «delete» триггер;
  • i == «insert» триггер;
  • u == «update» триггер.

Рекомендации:

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

Пример:

  • tai_client («after-insert» триггер по таблице «client»);
  • tbu_client («before-update» триггер по таблице «client»);
  • tadiu_client («after-delete, insert, update» триггер по таблице «client»)

6. НАИМЕНОВАНИЯ ФУНКЦИЙ.

Именование функции должно подчиняться следующим правилам: 
•	Get + «Составное имя» + Table — для функций, возвращающих таблицы;
•	Is + «Составное имя» — для функций, возвращающих 1 или 0;
•	Get + «Составное имя» — для функций, возвращающих значения остальных типов.
Имя функции должно отражать назначение функции.
Пример: 
•	GetClientCreditSum() (Сумма кредита по корреспонденту);
•	IsClientAccountValid() (Проверка счета клиента на закрытие);
•	GetConfirmedEstimTable() (Таблица ID утвержденных смет);

7. НАИМЕНОВАНИЯ ХРАНИМЫХ ПРОЦЕДУР.

Именам хранимых процедур должен предшествовать префикс «gsp_» строчными буквами + «Составное имя», отражающее назначение процедуры. 
Пример: gsp_CreditRowsSetDocStatus.

8. НАИМЕНОВАНИЯ ПРЕДСТАВЛЕНИЙ.

Именам представлений должен предшествовать префикс «v_» строчными буквами + «Составное строчное имя», отражающее назначение представления. 
Пример: 
•	v_sys_object (представление всех системных объектов);
•	v_used_macro (представление используемых Макро).

9. НАИМЕНОВАНИЕ ПЕРЕМЕННЫХ

Имя переменной языка “Transact SQL” == «Имя переменной», где «Типизированный префикс» имеет следующие значения:
•	@vc 	== varchar
•	@ch 	== char
•	@i 	== int, tinyint
•	@dt	== datetime, smalldatetime
•	@f 	== float		
•	@m 	== money
•	@cur	== cursor
•	@tbl 	== table

Источник: 1

Оцени публикацию:
  • 10,44
Оценили человек: 10

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

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » MySQL »