Шаблоны Проектирования Реляционных Баз Данных?
шаблоны проектирования обычно связаны с объектно-ориентированным дизайном.
есть шаблоны проектирования для создания и программирования реляционных баз данных?
Многие проблемы, безусловно, должны иметь многоразовые решения.
примеры будут включать шаблоны для проектирования таблиц, хранимых процедур, триггеров и т. д...
есть ли онлайн-хранилище таких шаблонов, подобное martinfowler.com?
примеры проблем, которые шаблоны могут решить:
- хранение иерархических данных (например, одна таблица с типом против нескольких таблиц с ключом 1:1 и различиями...)
- хранение данных с переменной структурой (например, общие столбцы vs xml vs столбец с разделителями...)
- денормализация данных (как это сделать с минимальными последствиями и т. д...)
10 ответов:
в серии подписей Мартина Фаулера есть книга под названием Рефакторинг Баз Данных. Это обеспечивает список методов для рефакторинга баз данных. Я не могу сказать, что я слышал список шаблонов базы данных так много.
Я также очень рекомендую Шаблоны Моделей Данных и Карта Метаданных который основывается на первом и является гораздо более амбициозным и интригующим. Только предисловие поучительный.
также отличным местом для поиска некоторых предварительно консервированных моделей баз данных является серия ресурсных книг модели данных Лена Сильверстона Объем 1 содержится универсально применимые модели данных (сотрудников, счета, доставки, покупки, и т. д.), Том 2 содержит отраслевые модели данных (бухгалтерия, здравоохранение и т. д.), часть 3 обеспечивает модели данных.
наконец, в то время как эта книга якобы об UML и Object Моделирование, Питер Коудс моделирование в цвете с UML обеспечивает управляемый "архетипом" процесс моделирования сущностей, начиная с предпосылки, что существует 4 основных архетипа любого объекта / модели данных
вот ссылка на джентльмена, который разработал несколько сотен бесплатных схем баз данных.
http://www.databaseanswers.org/data_models/
возможно, если вам нужно быстро построить БД это даст вам отправную точку в виде таблиц и отношений в заданной схеме. Имейте в виду, что вам, вероятно, потребуется изменить эту отправную точку. Я нашел его очень полезным.
во-вторых журнал SQL Server имеет случайный столбец называется "Моделист данных", который является очень образовательным и часто содержит полные схемы для данной системы.
шаблоны проектирования не являются тривиально многоразовыми решениями.
шаблоны проектирования являются многоразовыми, по определению. Это узоры вы обнаружение в других хороших решениях.
шаблон не является тривиально многоразовым. Однако вы можете реализовать свой дизайн вниз по шаблону.
реляционный дизайн скороговорки включают в себя такие вещи, как:
отношения один-ко-многим (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, тогда у вас нет проблем с кодовая страница.
- дайте каждому столбцу уникальное имя. Это делает его более легким на соединении, чтобы выбрать столбец. Это очень сложно, если каждая таблица имеет столбец "ID" или "имя" или "описание". Используйте XyzID и AbcID.
- используйте пакет ресурсов или equals для сложных выражений SQL. Это облегчает переход на другую СУБД.
- не бросает трудно на любом типе данных. Другая СУБД не может иметь такого типа данных. Например Oracle daes не имеют SMALLINT только a число.
Я надеюсь, что это хорошая отправная точка.
Ваш вопрос немного расплывчатый, но я полагаю
UPSERTможет рассматриваться как шаблон проектирования. Для языков, которые не реализуютMERGE,ряд альтернатив для решения проблемы (есть ли подходящие строки,UPDATE; elseINSERT) существует.
зависит от того, что вы подразумеваете под шаблон. Если вы думаете о человеке/компании/транзакции / продукте и т. д., То да - есть много общих схем баз данных, которые уже доступны.
Если вы думаете, Фабрика, Синглтон... тогда нет - вам не нужно ни одного из них, поскольку они слишком низки для программирования БД.
Если вы думаете об именовании объектов базы данных, то это относится к категории соглашений, а не к дизайну как таковому.
кстати, С. Лотт, один-ко-многим и отношения " многие ко многим "не являются"паттернами". Они являются основными строительными блоками реляционной модели.
Title: Data Patterns By: Microsoft Corporation Publisher: Microsoft Press Pub. Date: December 21, 2004 Print ISBN-13: 978-0-7356-2200-5
Comments