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

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

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

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


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

youtube.com/watch?v=7hFivbgIEqk

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

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