Придерживаться правил именования при разработке, всегда является хоршим тоном, поэтому, мне кажется, в 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