Соглашения о наименовании объектов БД

Предисловие

Просматривал старые файлы - обнаружил множество проектных документов. Вещь редкая, почти не встречающаяся.

Публикую первый. Вдруг кому поможет? Я не говорю, что документ надо использовать “как есть”. Но может он подскажет, как писать.Вы напишите свой документ.
Нам этот документ помог улучшить такой критерий качества, как “Модифицируемость” группы”Сопровождаемость” по ГОСТ 25010.
Что касается НДА… И продукта того нет, и фирмы, и дюжина лет прошла… А документы такого типа по прежнему актуальны.

Чуть не забыл. Чем короче стандарт, тем он эффективнее на единицу текста. Начинайте с коротких стандартов. 500-1000, пусть 2000 слов. В этом документе было 771 слово. И он был эффективен.

Версия 1.0

Дата: Давно
Автор: Федорова Надежда
———————————-

1    Введение

1.1    Цель (TBD)
1.2    Область действия документа

Документ применим только для программирования на языке C# для платформы Microsoft .NET Framework.
1.3    Определения, аббревиатуры и сокращения, используемые в системе
1.3.1    Определения (TBD)
1.4    Нотации, принятые в документе (TBD)

2    Соглашения о наименовании
2.1    Основные положения

  1. Все наименования должны иметь смысловое значение. Не допускается в наименовании транслитерация. Имена не должны превышать 30 символов.
  2. В именах дозволяются только буквы английского алфавита, цифры и символ подчеркивания. Не дозволяются пробелы, знаки препинания и специальные символы.
  3. Первый символ имени должен быть прописной буквой. Если имя состоит из нескольких слов, каждое слово начинается также с прописной буквы.
  4. Для разделения нескольких слов в наименовании, а также для выделения префикса необходимо использовать символ подчеркивания.
  5. Желательно избегать сокращений и аббревиатур.
  6. Необходимо избегать использования зарезервированных слов.

2.2    Таблицы

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

2.3    Поля

Наименование поля для первичного ключа должно иметь вид table_name_id. Наименование поля для внешнего ключа должно иметь вид junction/mapping_table_id

2.4    Индексы

Имя индекса начинается с имени таблицы, которое набирается в нижнем регистре. Цель индекса определяет его префикс.
Наименование первичного ключа представляет собой наименование таблицы с префиксом «pk_».
Наименование внешнего ключа строится из префикса «fk_», названия таблицы, для которой строится внешний ключ, символа подчеркивания и названия таблицы, на которую строится ссылка. Если создается более одного внешнего ключа на одну таблицу, необходимо через подчеркивание использовать суффикс, объясняющий назначение связи.
Наименование индекса строится из префикса «ix_», названия таблицы, символа подчеркивания и названия поля, для которого создается индекс.

2.5    Ограничения целостности и значения по умолчанию

Наименование ограничения целостности check строится из префикса «ck_», названия таблицы, символа подчеркивания и либо смыслового названия констрейнта, либо названия поля, для которого вводится ограничение.
Наименование ограничения целостности unique строится из префикса «uk_», названия таблицы, символа подчеркивания и либо смыслового названия констрейнта, либо названия поля, для которого вводится ограничение.
Наименование значения по умолчанию строится из префикса «df_», названия таблицы, символа подчеркивания и названия поля, для которого строится значение по умолчанию.

2.6    Триггеры

Наименование триггера строится из префикса «tr_», названия таблицы, символа подчеркивания и либо названия типа триггера (ins, updt, del), либо смыслового названия триггера – в случае, если количество триггеров для одного действия превышает единицу.

2.7    Представления

Представления именуются с добавление префикса vw_.

2.8    Пользовательские функции

Наименования строится из префикса «fn_» и смыслового названия функции.

3    Рекомендации по дизайну, наложению ограничений, связей, документированию БД

При работе с базами данных рекомендуется:

  1. Разбивать объекты по группам, и именовать их по группам для облегчения их поиска при построении в алфавитном порядке.
  2. Строго соблюдать регистры в запросах.
  3. Не указывать * в запросах SELECT, а указывать столбцы явно, так как это обеспечивает меньшее количество дисковых операций и лучшую дисковую производительность. Также желательно перечислять столбцы в команде INSERT, это позволит избежать проблем при изменении структуры таблицы
  4. Не использовать курсоры. Часто можно избежать применения курсоров, пользуясь командой SELECT. Кроме того, цикл while обычно работает быстрее, чем курсор.
  5. Избегать использования временных таблиц, вместо них можно использовать табличные переменные и вторичные таблицы.
  6. Избегать сканирования индекса – это противоречит цели создания индекса. Рекомендуется избегать использования специальных символов в начале слова при поиске при помощи оператора LIKE и использования в поиске операторов неравенства <> и NOT.
  7. Всегда добавлять dbo перед именем таблицы.
  8. Добавлять SET NOCOUNT ON в начало SQL скриптов, хранимых процедур и триггеров при их выполнении в рабочем режиме, т.к. это убирает сообщения типа ‘(1 row(s) affected)’ после выполнения команд INSERT, UPDATE, DELETE и SELECT. Это увеличивает производительность хранимых процедур, снижая трафик.
  9. Использовать более читабельные ANSI-Standard объединения (joins) вместо объединений в старом стиле. С ANSI объединениями выражение WHERE используется только для фильтрации данных, тогда как с объединениями в старом стиле выражение WHERE используется и для объединения, и для фильтрации.
  10. Не указывать перед именами хранимых процедур “sp_”. Префикс sp_ зарезервирован для системных хранимых процедур, которые поставляются вместе с SQL Server. Если процедура начинается с sp_, то SQL Server в первую очередь пытается найти ее в базе данных master, потом ищет по указанным базе данных или владельцу, после этого ищет среди процедур с владельцем dbo. Поэтому действительно можно сэкономить время на поиске хранимых процедуры, избегая приставки “sp_”.
  11. Использовать пользовательские типы данных (User Defined Datatypes), если какой-либо столбец постоянно встречается в таблицах, чтобы тип данных этого столбца совпадал во всех этих таблицах.
  12. Минимизируйте использование NULL, т.к. это часто приводит к проблемам в приложениях, если только эти приложения специально не убирают NULL или не выводят NULL в какой-либо другой форме. Любое выражение, используемое с NULL, дает результат NULL. Функции ISNULL и COALESCE могут помочь в обработке значений NULL.

Оставьте комментарий

Вы должны войти, чтобы оставить свой комментарий.