Шаблоны Проектирования Реляционных Баз Данных?
шаблоны проектирования обычно связаны с объектно-ориентированным дизайном.
есть шаблоны проектирования для создания и программирования реляционных баз данных?
Многие проблемы, безусловно, должны иметь многоразовые решения.
примеры будут включать шаблоны для проектирования таблиц, хранимых процедур, триггеров и т. д...
есть ли онлайн-хранилище таких шаблонов, подобное martinfowler.com?
примеры проблем, которые могут решить шаблоны:
- хранение иерархических данных (например, одна таблица с типом против нескольких таблиц с ключом 1:1 и различиями...)
- хранение данных с переменной структурой (например, общие столбцы vs xml vs разделенный столбец...)
- денормализация данных (как это сделать с минимальными последствиями и т. д...)
10 ответов
в серии подписей Мартина Фаулера есть книга под названием Рефакторинг Баз Данных. Это предоставляет список методов для рефакторинга баз данных. Не могу сказать, что я так часто слышал список шаблонов баз данных.
Я также настоятельно рекомендую David C. Hay's Шаблоны Моделей Данных и Карта Метаданных который основывается на первом и гораздо более амбициозен и интригует. Только предисловие поучительный.
также отличным местом для поиска некоторых предварительно консервированных моделей баз данных является серия книг ресурсов модели данных Лена Сильверстона Объем 1 содержится универсально применимые модели данных (сотрудников, счета, доставки, покупки, и т. д.), Том 2 содержит отраслевые модели данных (бухгалтерия, здравоохранение и т. д.), часть 3 предоставляет шаблоны моделей данных.
наконец, в то время как эта книга якобы об UML и Object Моделирование, Питер Коудс моделирование в цвете с UML обеспечивает" архетип " управляемый процесс моделирования сущностей, начиная с предпосылки, что есть 4 основных архетипа любого объекта / модели данных
вот ссылка на джентльмена, который разработал несколько сотен бесплатных схем баз данных.
http://www.databaseanswers.org/data_models/
возможно, если вам нужно быстро построить БД это даст вам отправную точку в виде таблиц и отношений в заданной схеме. Имейте в виду, что вам, вероятно, придется изменить эту отправную точку. Я нашел это очень полезным.
во-вторых журнал SQL Server имеет случайный столбец называется "Data Modeler", который является очень образовательным и часто содержит полные схемы для данной системы.
шаблоны проектирования не являются тривиально многоразовыми решениями.
шаблоны проектирования являются многоразовыми, по определению. Это узоры вы detect в других хороших решениях.
шаблон не является тривиально многоразовым. Однако вы можете реализовать свой дизайн down, следуя шаблону.
реляционные паттеры дизайна включают такие вещи, как:
отношения "один ко многим" (master-detail, parent-child) с использованием внешний ключ.
отношения "многие ко многим" с таблицей моста.
необязательные отношения "один к одному", управляемые с нулями в столбце FK.
звездная схема: измерение и факт, дизайн OLAP.
полностью нормализованный дизайн OLTP.
несколько индексированных столбцов поиска в измерении.
"таблица поиска", содержащая PK, описание и значения кода, используемые одним или несколькими приложениями. Зачем нужен код? Я не знаю, но когда они должны использоваться, это способ управления коды.
Uni-таблица. [Некоторые называют это анти-паттерном; это паттерн, иногда это плохо, иногда это хорошо.] Это таблица с большим количеством предварительно Соединенных вещей, которые нарушают вторую и третью нормальную форму.
таблица выбора. Это таблица, которая нарушает первую нормальную форму, имея массив или последовательность значений в Столбцах.
база данных смешанного использования. Это база данных, нормализованная для обработки транзакций, но с большим количеством дополнительных индексов для отчетности и анализа. Это анти-шаблон - не делай этого. Люди все равно это делают, так что это все равно закономерность.
большинство людей, которые разрабатывают базы данных, могут легко отбарабанивать полдюжины "это еще один из тех"; это шаблоны дизайна, которые они используют на регулярной основе основа.
и это не включает административные и операционные модели использования и управления.
проверьте этот блог - Программист Базы Данных.
Он описывает некоторые схемы БД.
книги Джо Челко отлично подходят для такого рода вещей, в частности "SQL для Smarties". У него есть несколько инновационных решений общих проблем, большинство из которых-многоразовые шаблоны проектирования.
AskTom является, вероятно, самым полезным ресурсом по лучшим практикам в Oracle DBs. (Обычно я просто набираю "asktom" в качестве первого слова запроса google по определенной теме)
Я не думаю, что это действительно уместно говорить о шаблонах проектирования реляционных баз данных. Реляционные базы данных уже являются применением " шаблона проектирования "к проблеме (проблема заключается в том," как представлять, хранить и работать с данными при сохранении их целостности", и дизайн, являющийся реляционной моделью). Другие подходы (обычно считающиеся устаревшими) - это навигационные и иерархические модели (и я уверен, что многие другие существуют).
сказав это, вы можете рассматривать "хранилище данных" как несколько отдельный "шаблон" или подход в дизайне базы данных. В частности, вам может быть интересно прочитать о Звезда-схемы.
после многих лет разработки базы данных я могу сказать, что есть некоторые нет идет и некоторые вопросы, которые вы должны ответить, прежде чем начать:
вопросы:
- вы хотите использовать в будущем другую СУБД? Если да, то не использует специальный SQL-материал текущей СУБД. Удалите логику в приложении.
не использовать:
- пробелы в именах таблиц и столбцов имена
- не ASCII символов в именах таблиц и столбцов
- привязка к определенному нижнему регистру или верхнему регистру. И никогда не используйте 2 таблицы или столбца, которые отличаются только нижним и верхним регистром.
- не использует ключевые слова SQL для имен таблиц или столбцов, таких как" FROM"," BETWEEN"," DELETE " и т. д.
рекомендации:
- используйте NVARCHAR или эквиваленты для поддержки unicode, тогда у вас нет проблем с кодовая страница.
- дайте каждому столбцу уникальное имя. Это облегчает выбор столбца в join. Это очень сложно, если каждая таблица имеет столбец " ID "или" Name "или"Description". Используйте XyzID и AbcID.
- используйте пакет ресурсов или equals для сложных выражений SQL. Это облегчает переход на другую СУБД.
- не бросает жесткий на любой тип данных. Другой СУБД не может иметь этот тип данных. Например, у Oracle daes нет SMALLINT только a число.
Я надеюсь, что это хорошая отправная точка.
ваш вопрос немного расплывчатый, но я полагаю UPSERT
можно считать шаблоном дизайна. Для языков, которые не реализуют MERGE
, ряд альтернатив для решения проблемы (есть ли подходящие строки, UPDATE
; else INSERT
) существует.
зависит от того, что вы подразумеваете под шаблон. Если вы думаете, что человек / компания/транзакция / продукт и т. д., То да - есть много общих схем базы данных, уже доступных.
Если вы думаете, Фабрика, Синглтон... тогда нет - вам не нужен ни один из них, поскольку они слишком низкоуровневые для программирования БД.
Если вы думаете об именовании объектов базы данных, то это относится к категории соглашений, а не к дизайну как таковому.
BTW, S. Lott, один-ко-многим и отношения " многие ко многим "не являются"шаблонами". Они являются основными строительными блоками реляционной модели.
Title: Data Patterns
By: Microsoft Corporation
Publisher: Microsoft Press
Pub. Date: December 21, 2004
Print ISBN-13: 978-0-7356-2200-5