Шаблоны Проектирования Реляционных Баз Данных?



шаблоны проектирования обычно связаны с объектно-ориентированным дизайном.
есть шаблоны проектирования для создания и программирования реляционных баз данных?

Многие проблемы, безусловно, должны иметь многоразовые решения.



примеры будут включать шаблоны для проектирования таблиц, хранимых процедур, триггеров и т. д...



есть ли онлайн-хранилище таких шаблонов, подобное martinfowler.com?





примеры проблем, которые шаблоны могут решить:




  • хранение иерархических данных (например, одна таблица с типом против нескольких таблиц с ключом 1:1 и различиями...)

  • хранение данных с переменной структурой (например, общие столбцы vs xml vs столбец с разделителями...)

  • денормализация данных (как это сделать с минимальными последствиями и т. д...)

1173   10  

10 ответов:

в серии подписей Мартина Фаулера есть книга под названием Рефакторинг Баз Данных. Это обеспечивает список методов для рефакторинга баз данных. Я не могу сказать, что я слышал список шаблонов базы данных так много.

Я также очень рекомендую Шаблоны Моделей Данных и Карта Метаданных который основывается на первом и является гораздо более амбициозным и интригующим. Только предисловие поучительный.

также отличным местом для поиска некоторых предварительно консервированных моделей баз данных является серия ресурсных книг модели данных Лена Сильверстона Объем 1 содержится универсально применимые модели данных (сотрудников, счета, доставки, покупки, и т. д.), Том 2 содержит отраслевые модели данных (бухгалтерия, здравоохранение и т. д.), часть 3 обеспечивает модели данных.

наконец, в то время как эта книга якобы об UML и Object Моделирование, Питер Коудс моделирование в цвете с UML обеспечивает управляемый "архетипом" процесс моделирования сущностей, начиная с предпосылки, что существует 4 основных архетипа любого объекта / модели данных

вот ссылка на джентльмена, который разработал несколько сотен бесплатных схем баз данных.

http://www.databaseanswers.org/data_models/

возможно, если вам нужно быстро построить БД это даст вам отправную точку в виде таблиц и отношений в заданной схеме. Имейте в виду, что вам, вероятно, потребуется изменить эту отправную точку. Я нашел его очень полезным.

во-вторых журнал SQL Server имеет случайный столбец называется "Моделист данных", который является очень образовательным и часто содержит полные схемы для данной системы.

шаблоны проектирования не являются тривиально многоразовыми решениями.

шаблоны проектирования являются многоразовыми, по определению. Это узоры вы обнаружение в других хороших решениях.

шаблон не является тривиально многоразовым. Однако вы можете реализовать свой дизайн вниз по шаблону.

реляционный дизайн скороговорки включают в себя такие вещи, как:

  1. отношения один-ко-многим (master-detail, parent-child) отношения с использованием внешний ключ.

  2. отношения "многие ко многим" с мостовой таблицей.

  3. необязательные отношения один-к-одному, управляемые с помощью нулей в столбце FK.

  4. звездная схема: измерение и факт, дизайн OLAP.

  5. полностью нормализованный дизайн OLTP.

  6. несколько индексированных столбцов поиска в измерении.

  7. "таблица поиска", содержащая PK, описание и значения кода, используемые одним или несколькими приложениями. Почему есть код? Я не знаю, но когда они должны быть использованы, это способ управления кодами.

  8. Uni-таблица. [Некоторые называют это анти-паттерном; это паттерн, иногда это плохо, иногда это хорошо.] Это таблица с большим количеством предварительно Соединенных вещей, которые нарушают вторую и третью нормальную форму.

  9. таблица выбора. Это таблица, которая нарушает первую нормальную форму, имея массив или последовательность значений в Столбцах.

  10. смешанная база данных. Это база данных, нормализованная для обработки транзакций, но с большим количеством дополнительных индексов для отчетности и анализа. Это анти-паттерн - не делай этого. Люди все равно это делают, так что это все еще шаблон.

большинство людей, которые разрабатывают базы данных, могут легко отбарабанивать полдюжины "это еще один из них"; это шаблоны проектирования, которые они используют на регулярной основе основа.

и это не включает административные и операционные модели использования и управления.

проверьте этот блог - Программист Базы Данных.

Он описывает некоторые шаблоны баз данных.

книги Джо Селко отлично подходят для такого рода вещей, в частности "SQL для Smarties". У него есть несколько инновационных решений общих проблем, большинство из которых являются многоразовыми шаблонами проектирования.

http://www.celko.com/books.htm

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; else INSERT) существует.

зависит от того, что вы подразумеваете под шаблон. Если вы думаете о человеке/компании/транзакции / продукте и т. д., То да - есть много общих схем баз данных, которые уже доступны.

Если вы думаете, Фабрика, Синглтон... тогда нет - вам не нужно ни одного из них, поскольку они слишком низки для программирования БД.

Если вы думаете об именовании объектов базы данных, то это относится к категории соглашений, а не к дизайну как таковому.

кстати, С. Лотт, один-ко-многим и отношения " многие ко многим "не являются"паттернами". Они являются основными строительными блоками реляционной модели.

эта книга выглядит интересно

Title: Data Patterns
By: Microsoft Corporation
Publisher: Microsoft Press
Pub. Date: December 21, 2004
Print ISBN-13: 978-0-7356-2200-5

Comments

    Ничего не найдено.