Рекомендации к наименованию объектов базы знаний и объектам БД
Рекомендации к наименованию объектов базы знаний платформы ШЕРП приводятся на примере сущности "Счет" в базе данных Accounting (информационная система «Взаиморасчеты»). Для нее создаются следующие объекты:
- Таблица dbo.Bill - наименование сущности на английском языке в единственном числе).
- Представление dbo.Bill_List - к наименованию сущности добавилось слово _List).
- Процедуры:
- dbo.Bill_Insert - добавление)
- dbo.Bill_Update - редактирование)
- dbo.Bill_Delete - удаление)
- dbo.Bill_Modify - добавление и редактирование)
- Далее импортируем представление dbo.Bill_List, как объект БД в ШЕРП. Т.е. сущность будет формироваться на основе представления.
- Сущность Взаиморасчеты. Счет - к наименованию сущности добавляется наименование информационной системы (ИС). После точки пробел. Если наименование ИС длинное, например, «Оперативный учет имущества», то пишут сокращенно - ОУИ. Счет
- Датаблоки обычно называем также, как называются объекты в базах данных. В начале пишем наименование БД, после точки ставим пробел:
- Accounting. Bill_List - основной датаблок
- Accounting. Bill_Init - датаблок инициализации
- и т.д.
Если объект базы данных имеет схему, отличную от dbo, то название схемы можно указать после наименования датаблока в скобочках, например: Accounting. Contract_List (share) – датаблок для представления share.Contract_List в базе Accounting.
- Файндер, браузер и вьювер:
- Accounting. Bill_Finder
- Accounting. Bill_Browser (Меню браузера: Accounting. Bill_BrowserMenu)
- Accounting. Bill_Viewer (Главный фрейм: Accounting. Bill_Header, меню: Accounting. Bill_ViewerMenu, общий фрейм: Accounting. Bill_Common)
- Команды пользователя:
- Взаиморасчеты. Добавить счет
- Взаиморасчеты. Редактировать счет или Взаиморасчеты. Изменить счет
- Взаиморасчеты. Удалить счет
- Взаиморасчеты. Поиск счетов (открыть файндер)
- Взаиморасчеты. Открыть карточку счета (открыть вьювер)
- Для файндер-браузера для поиска счетов создаются отдельные файндер и браузер, которые называются одинаково: Accounting. Bill_FinderBrowser.
- Браузер-селер: Accounting. Bill_BrowserSeler.
- Селер: Accounting. Bill_Seler.
- Вешаем еще один фрейм на вьювер, который будет показывать информацию по договору. Название такого фрейма будет такое: Accounting. Contract_Frame_Bill. Наименование фрейма состоит из наименования сущности, затем наименование объекта (Frame, Browser, Form и т.д.), дальше идет наименование сущности вьювера. Обратите внимание, что наименование самого объекта является произвольным, но придерживайтесь логичных имен, например: Browser, Form, Frame, Sheduler, Report.
Если процедур на редактирование несколько, например, кроме основной dbo.Bill_Update нужно создать отдельную процедуру на редактирование договора счета, то можно её назвать dbo.Bill_ContractUpdate. Команда пользователя будет называться: Взаиморасчеты. Изменить договор счета.
Рекомендации к объектам базы данных.
- Не используйте специальные символы: &, #, @
- Если необходимо выделить части имени используйте чередование строчных и прописных символов. В наименовании столбцов и таблиц не указывайте символ нижнего подчеркивания вообще.
Пример:
- Browser_сolumn - неправильно
- BrowserСolumn - правильно
В процедурах и представлениях допускается символ нижнего подчеркивания, для разделения наименования сущности от действия. Например: dbo.ContractType_Modify, dbo.ContractType_List.
- Не используйте в именах транслитерацию русских слов.
Пример:
- Usluga - неправильно
- Service - правильно
- Не смешивайте в имени русские и английские слова.
Пример:
- UslugaName - неправильно
- ServiceName - правильно
- Не используйте сокращения. Не пытайтесь сократить длину наименования.
Пример:
- Fd - неправильно
- FinishDate - правильно
- Не используйте для обозначения типа объектов префиксы. Это затрудняет чтение, поиск объектов, а также возможные замены типов объектов. Например, представление решили заменить на таблицу (и наоборот).
Пример:
- Таблица tAbonent, gредставление vAbonent, VIEW_Abonent - неправильно
- Таблица Abonent, Abonent_List - правильно
- Поле, уникального идентификатора таблицы называйте ID<ИмяТаблицы>. Никогда не называйте просто ID.
Пример:
- ID - неправильно
- IDAbonent - правильно
- Называйте одинаково поля, имеющие одну природу из разных таблиц. Особенно это касается первичного и внешнего ключа.
Пример:
- ID в таблице Abonent, IDAbonent в таблице AbonentDetail - неправильно
- IDAbonent в таблице Abonent, IDAbonent в таблице AbonentDetail - правильно
- Называйте хранимые процедуры как <Существительное><Глагол>/<Сущность><Действие>. В этом случае все объекты относящиеся к одной сущности, будут идти подряд в алфавитном списке.
Пример:
- Abonent_Add
- Abonent_Delete
- Abonent_Rename
- Не используйте зарезервированные слова в наименованиях.
Пример:
- [From] - неправильно
- AddressFrom - правильно
- Называйте таблицы, выполняющие роль связи M:N между сущностями, как <Сущность1Сущность2>.
Пример:
- Связь между таблицами User и Role - UserRole
- Не используйте типы FLOAT и REAL для хранения данных с плавающей точкой. Используйте вместо них типы без ошибки округления MONEY, SMALLMONEY и DECIMAL.
- Помещайте поле с первичным ключом в начало описания таблицы.
- Всегда заполняйте Description в поле!
- Устанавливайте SET NOCOUNT ON. При установке OFF после каждого оператора сервер посылает клиенту сообщение DONE_IN_PROC с количеством обработанных записей. Запретив это, вы кардинально сократите сетевой трафик и существенно увеличите производительность.
- При динамическом формировании текста запроса не подставляйте параметры в текст, а используйте хранимую процедуру sp_executesql.
- Всегда комментируйте ваш код.
- Зарезервированные слова пишите прописными буквами.
Сравните:
Select a,b,c from browser where idbrowser=1
и
SELECT a, b, c FROM Browser WHERE IDBrowser = 1
- Разделяйте операторы языка пробелами
Пример:
- a,b,c,d; a=1 and b=2 - неправильно
- a, b, c, d; a = 1 and b = 2 - правильно
- Используйте вертикальное выравнивание и отступы
Сравните:
Select a,b,c from browser where idbrowser=1
Update t set a=1,b=2,c=3 where id=2 and name=’qwe’
и
SELECT
a,
b,
c
FROM Browser
WHERE
IDBrowser = 1
UPDATE t SET
a = 1,
b = 2,
c = 3
WHERE
Id = 1 AND
Name = ‘qwe’
- Вставляйте пустые строки в качестве вертикального разделителя.
- Никогда не пишите несколько операторов на одной строке, разделяя точкой с запятой.
- Никогда не пишите * в списке полей команды SELECT. Всегда перечисляйте имена полей.
- В процедурах типа Modify, где используется вставка и удаление данных, используется параметр Action, который принимает значения: 1 – вставка, 2 – изменение. Никогда не используйте процедуру для удаления с параметром Action равным 3. Для удаления записи всегда делайте отдельную процедуру. Сам параметр всегда называйте Action, а тип его – int.
- Если для актуальности записей в таблице используется столбец IdRecStatus, то используются следующие значения: 0 – запись актуальна, -1 – запись удалена. Тип параметра – int.
- Часто бывает, что нужно создать поля, в которых записывается информация о времени создания, изменения и кто автор изменения. Рекомендуется такие поля называть так: CreateDate (Дата создания), CreateUser (Кто создал), ChangeDate (Дата изменения), ChangeUser (Кто изменил). Для определения текущего времени используйте функцию – GETDATE().
- Для построения представлений (VIEW) никогда не используйте дизайнер, пишите код руками, генерируйте выборки с помощью Management Studio, SqlGen или непосредственно платформы ШЕРП (тоже может генерировать различный код с помощью SQL редактора). После дизайнера остается нечитабельный ужасный код, который превращает развитие системы другими разработчиками в весьма трудозатратный процесс.
0 комментариев