Правила для БД

Объекты баз данных

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

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

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

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

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

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

Пример:

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

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

Любая таблица должна иметь первичный ключ — автоинкрементное поле с именем «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 

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


© AIKernel 2007-2011
12.03.2007 - 30.04.2011