Работа со структурой базы данных
Для проектирования и поддержания актуальной структуры базы данных предлагается использовать следующие меры и правила:
Для проектирования БД использовать Toad Data Modeller 2.25.
Хранить в SVN SQL-скрипт создания БД, начальные и тестовые данные, все патчи для БД.
Файл проекта TDM и SQL-скрипт создания БД должен быть всегда в актуальном состоянии.
SQL-файлы c view, procedures и т.д. хранить отдельно от SQL-скрипта создания БД.
Поддержка начальных данных и доп. структуры в актуальном состоянии.
Версию базы данных хранить в специальной таблице и изменять её в патче.
Приветствуется использование скриптов для создания БД из дампа .
Приведем пример структуры папок и файлов для проекта Project.
docs/
Views/ - Папка с Views
Project.Reports.sql - Views для создания отчетов
Project.Site.sql - Views для работы с источниками
Project.Audit.sql - Views для работы с аудитом
Patches/ - Папка с патчами для БД
Project.dm2 - Файл проекта TDM
Project.sql - Сгенерированный sql-скрипт создания БД от TDM
Initial Data.sql Начальные данные (DML)
Test Data.sql - Тестовые данные (DML)
rebuild-database.bat
1) - Batch-файл создания БД
Процесс изменения структуры БД
Отредактировать файл проекта TDM.
Сгенерировать из TDM SQL-скрипт создания БД.
Создать патч.
Изменить при необходимости Views, Initial Data.sql.
Применить патч.
Правила именования
Все внешние ключи должны заканчиваться на «Id».
Использование lowerCamelCase.
Названия таблиц – во множественном числе.
Использовать полную форму PK (не id, a tableId)…
Примеры именования
Таблицы: users, newsCatalogues, newsFiles, vfsFoldersTree
Поля: userId, newsId, newsCatalogueId, title, description, content, orderNumber, publicationDate, isFavorite
Внешние ключи: FK_questionRubrics_statusId, FK_questionTries_roundId (FK_<sourceTable>_<referenceKey>)
Индексы: IX_ruQuestionPoints_roundUserId (IX_<sourceTable>_<indexKey>)
Рекомендуемые названия полей
title – заголовок, название;
description – описание;
foreword – преамбула, короткий текст;
content – обычный текст;
publicationDate – дата публикации;
createdAt – дата создания;
modifiedAt – дата изменения;
alias – системное имя;
lastName, firstName, middleName – ФИО;
url – ссылка;