Советы по проектированию базы данных уровня предприятия - PullRequest
8 голосов
/ 11 июля 2009

Я работаю с корпоративным приложением и подобрал несколько советов по дизайну БД

  1. Все таблицы должны иметь следующие поля, которые помогают в журнале аудита - LastChangedBy, LastChanged, LastChangedPage
  2. Все ваши хранимые процедуры, имеющие динамический SQL, должны иметь параметр @ bDebug. По умолчанию установлено значение 0. Если установлено значение 1, распечатайте динамический оператор SQL, и это будет очень полезно при отладке.
  3. Для CRUD SP есть способ частичного обновления таблицы. Если в вашей таблице 10 полей, а в одном из SP вам нужно обновить только 5 полей, для этого есть слой абстракции.

Какие еще полезные советы вы можете придумать?

РЕДАКТИРОВАТЬ: Спасибо за все ответы. Я все еще ищу ответ, который может дать ссылку на советы / рекомендации / стратегии для DB Design.

Ответы [ 6 ]

4 голосов
/ 11 июля 2009

Для № 1: перейдите на SQL Server 2008 и просто включите «Изменение сбора данных». Если вам действительно необходимо вести подробные контрольные журналы, одна эта функция оправдает затраты.

Для # 2: Любая хранимая процедура с динамическим sql должна автоматически подвергаться двойному секретному испытанию (то есть: она разрешена, но должна пройти несколько уровней проверки кода, чтобы убедиться, что нет лучшего способа сделать это).

1 голос
/ 12 июля 2009

LastChangedBy и т. Д. Поля довольно бесполезны. Если вам действительно нужен контрольный журнал, вам нужны отдельные контрольные таблицы, которые детализируют изменения и поддерживают историю аудита. Если вам не нужен контрольный журнал, просто добавьте поля LastChangedBy и т. Д., Что не принесет никакой пользы для бизнеса.

1 голос
/ 12 июля 2009

Несколько мыслей, которые сразу приходят в голову при работе с очень большой базой данных (VLDB):

Следует ли реализовать разбиение таблиц?

Большие таблицы базы данных с миллионами записей могут выиграть от разделения таблиц.

  • Доступность этого SQL Server Функция ограничена использованием Enterprise Edition.
  • Применимость зависит от оборудование вашей платформы и наличие соответствующего ключ разделения в данных таблицы.

Какие таблицы наиболее часто используются?

Рассмотреть возможность разделения по файловой группе, т. Е. Разместить таблицу клиентов в одной файловой группе и таблицу транзакций в другой. Это позволяет SQL Server создавать несколько потоков для доступа к файлам, создавая возможность последовательного ввода-вывода.

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

Разработка гибкой стратегии индексации

Вы, несомненно, уже имеете в виду стратегию индексирования, однако для платформ VLDB ее следует часто пересматривать. По мере увеличения объемов данных и изменения распределения данных могут меняться планы выполнения ваших запросов доступа к данным. Вы должны планировать необходимость регулярно пересматривать свою стратегию индексирования.

1 голос
/ 11 июля 2009

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

0 голосов
/ 12 сентября 2009

Даты должны храниться в формате Utc и преобразовываться в местное время на клиенте.

0 голосов
/ 11 июля 2009

На мой взгляд, потребуются поля CreatedBy и Created .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...