Какие самые важные соображения при проектировании базы данных?

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

Ответов (12)

Решение

Прежде всего, что наиболее важно, изучите и поймите сферу бизнеса.

1) Вы смотрите на высокую скорость транзакций, например, на загруженный веб-сайт, или на низкое использование, например, на кадровую систему небольшой компании?

2) Является ли безопасность большой проблемой - обрабатываете ли вы личные или финансовые данные. Или это просто каталог продукции

3) Будут ли ваши пользователи делать много обновлений / вставок или это в основном только для чтения

4) Сколько пользователей, каковы модели использования (пиковая нагрузка или равномерно)

5) Вам нужен 24x7, 16x5 или другое время безотказной работы, 24x7 намного сложнее, так как у вас нет времени простоя для обслуживания

6) Насколько велика будет БД? Если он действительно большой, вам придется проектировать свои таблицы с учетом этого и / или разделения

7) Нужно ли смотреть корпоративный кластер с горячим отказом, или просто нормальный хостинг?

8) Как будет администрироваться БД, в большинстве проектов БД 95% усилий тратится на разработку для пользователей и их приложений, администратор БД забывается

9) Администратор БД, из предыдущего включает резервное копирование, изменения в других системах, интеграцию с другими системами, загрузку данных

10) На самом деле загрузка и использование существующих данных - еще одна большая проблема сама по себе.

Это для начала

Я лично предлагаю взять или позаимствовать копию «Проектирования баз данных для простых смертных». Все, что вам когда-либо понадобится при проектировании базы данных, будет перечислено в этой книге, и это в очень методичном и логическом порядке, в котором вы можете построить базу данных. Определения таблицы и столбца утомительны, но в конечном итоге стоит потратить каждую минуту.

Я считаю, что вы могли бы прочитать первую главу книги через Google Книги или через предварительный просмотр страницы на Amazon.com.

Есть некоторые лакомые кусочки, которые вы можете выучить с течением времени или на этом сайте в качестве «лучших практик», но ничто не сравнится с правильным проектированием с нуля с первой попытки.

Верность сущностям реального мира, которые должна моделировать база данных.

вы также должны понимать, для чего будет использоваться база данных. если это для транзакций (OLTP), оно должно быть как можно более нормализовано, и цель состоит в том, чтобы транзакции выполнялись как можно быстрее. если он предназначен для анализа и / или отчетности (OLAP), его следует денормализовать во многих местах, где вы будете выполнять агрегирование. соображения по проектированию баз данных OLTP не применимы к базам данных OLAP, и наоборот.

База данных является вторичной по отношению к структуре вашего бизнес-процесса и должна поддерживать ваш бизнес-процесс прямым и простым способом. Вы получите гораздо больше пользы от хорошо сформированной, чистой модели сущностей, чем от случайного индексации. Итак, как только ваш процесс определен, вы берете его и разбиваете на «сущности» как можно более четко с отношениями, которые имеют смысл. Как только вы узнаете свои сущности, они преобразуются в таблицы базы данных.

Одна из самых важных вещей, которую нужно сделать, - не чрезмерно архитектор.

Чтобы дать вам точный ответ, давайте возьмем в качестве примера сущность «транспортное средство». Автомобиль имеет несколько колес. Вам нужно принять важное решение, зная, что к транспортному средству будет прикреплено несколько колес. У вас есть 2 варианта выбора: вы можете сделать «колеса» отдельной сущностью или вы можете сделать «количество колес» целочисленным полем в сущности «Транспортное средство».

Если вы абсолютно уверены, что вам нужно будет хранить много изменяющейся информации о каждом колесе, тогда создайте объект «Колесо». Теперь у вас есть связь между сущностями (автомобилем и колесом).

В противном случае подойдет простое поле.

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

Знайте свои данные.

Базовый набор баллов:

  • Определите цель вашей системы.
  • Определите сущности, которые потребуются вашей системе.
  • Определите, какую информацию должна предоставлять каждая организация.
  • Определите существующие отношения между вашими сущностями
  • Что пользователь хотел бы знать о ваших данных и делать с ними.
  • Концептуальный и логический дизайн базы данных
  • Нормализация и ERD
  • Определите поля с уникальными значениями.
  • Выберите подходящие типы данных для ваших полей.
  • Рефакторинг базы данных.

кто будет его строить и поддерживать, где, как и с чем. У вас есть методы, процедуры и процессы для того, чтобы сделать это или просто избавиться от этого. Безусловно, бизнесу необходимо управлять необходимыми данными, которые должны быть собраны в независимом от внедрения ERD. Но вы также должны подумать о том, кто будет поддерживать данные с течением времени. А также кто «владеет» данными. Кому принадлежат определения сущностей и атрибутов.

1 - Последовательность

Со временем ваша база данных изменится, и другим людям придется с ней работать. Сделайте одолжение себе и им и убедитесь, что структуры названы таким образом, чтобы любой разумный человек с базовыми знаниями предметной области мог предвидеть содержимое таблицы. Выделите время, чтобы записать (можно просто, как блокнот) некоторые базовые конструкции, которые вы используете.

Примеры:

  • Все первичные ключи начинаются с IdTableName
  • Регистр имен таблиц - Паскаль
  • Все внешние ключи - это TableNameId
  • доб ...

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

Ваша база данных - это последняя линия защиты целостности данных. Осуществляйте доступ ко всем данным через хранимые процедуры и обеспечивайте целостность данных с помощью проверочных ограничений, внешних ключей и т. Д. Введите данные правильно, не используйте VARCHAR (50), если CHAR (5) является более конкретным и точным.

Кто-то еще кое-что упомянул о простоте. И последнее, но не менее важное: не создавайте что-либо, потому что вы «думаете», что это вам понадобится в следующем месяце. Все быстро меняется, и вы в конечном итоге будете больше обслуживать то, что, как вы «думали», собираетесь использовать, а не то, что вы используете, если вы заполните свою базу данных, и это будет бесполезно.

Информационные требования - самая важная часть.

Это еще один способ сказать «определите цель вашей системы» из ответа, предоставленного CMS.

Концептуальное моделирование данных - это просто организованный способ сбора и представления требований к информации. Каждое значение, хранимое и обслуживаемое базой данных, связано с атрибутом, а каждый атрибут - с доменом. Атрибуты, в свою очередь, описывают либо сущности, либо отношения между сущностями. Сущности предмета и отношения составляют концептуальную структуру «реального мира», который описывают данные. Построение ERD на основе концептуальной модели легко, хотя и утомительно.

После этого вы можете выбрать СУБД, спроектировать логическую базу данных, спроектировать физическую базу данных и построить. На каждом этапе решения, которые вы принимаете, более обратимы из-за независимости данных. Независимость данных инкапсулирует проектные решения в базе данных, за исключением последствий для производительности. Конечно, вы должны знать свой инструмент.

Наличие инструмента для управления моделями и их преобразования в диаграммы и сценарии может быть очень полезным для ускорения этого процесса и уменьшения количества ошибок.

Но если у вас есть серьезные ошибки или упущения в ваших требованиях к информации, никакие умные разработки или реализации не смогут их исправить.

О хорошей базе данных можно судить по следующему:

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

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

База данных также является одной из немногих вещей, которые вам действительно нужно решить заранее. Вы всегда можете исправить плохой код, но редко можете отказаться от плохого изменения схемы. Убедитесь, что все делаете правильно.

  • Соглашения об именах: придерживайтесь одного набора правил
  • Нормализация: (степень нормализации) - это будет зависеть от сравнения количества прочитанных и количества обновлений объекта данных.
  • Относительная целостность и другие ограничения: некоторые люди выступают за использование внешних ключей, а некоторые - нет, но вы должны выбрать это в зависимости от ваших требований и личных предпочтений, так как это большая дискуссия, но я всегда предпочитаю использовать FK
  • Создание диаграмм базы данных, анализ и обсуждение с командой, если это возможно.