====== Работа со структурой базы данных ====== Для проектирования и поддержания актуальной структуры базы данных предлагается использовать следующие меры и правила: - Для проектирования БД использовать 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/ - Папка с патчами для БД * 2010-02-15-patch.sql * 2010-02-16-01-proxy.sql * 2010-02-16-02-words-01.sql * Project.dm2 - Файл проекта TDM * Project.sql - Сгенерированный sql-скрипт создания БД от TDM * Initial Data.sql Начальные данные (DML) * Test Data.sql - Тестовые данные (DML) * rebuild-database.bat ((файл исполняет команды и заливает файлы: drop database, create database, Project.sql, Views/*, Initial Data.sql, Test Data.sql)) - 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__) - Индексы: IX_ruQuestionPoints_roundUserId (IX__) ===== Рекомендуемые названия полей ===== * title – заголовок, название; * description – описание; * foreword – преамбула, короткий текст; * content – обычный текст; * publicationDate – дата публикации; * createdAt – дата создания; * modifiedAt – дата изменения; * alias – системное имя; * lastName, firstName, middleName – ФИО; * url – ссылка; ====== ====== [[start:работа_с_svn|Далее >>>]]