Дизайн базы данных в SQL Server или C #? - PullRequest
2 голосов
/ 14 ноября 2010

Должна ли база данных создаваться на SQL Server или C #?

Я всегда думал, что было бы уместнее создать ее на SQL Server, но недавно я начал читать книгу (Pro ASP.NET MVC Framework), в которойНасколько я понимаю, в основном говорится, что, вероятно, лучше написать ее на C #, поскольку вы будете получать доступ к модели через C #, что имеет смысл.

Мне было интересно, каково мнение всех остальных по этому вопросу?...

Я имею в виду, например, считаете ли вы «правильным» иметь таблицу, которая задает константы (например, таблицу AccessLevel, которая всегда должна содержать

1 Everyone
2 Developers
3 Administrators
4 Supervisors
5 Restricted

Не было бы более надежным и упорядоченным просто иметь перечисление длятой же цели?

Ответы [ 4 ]

5 голосов
/ 14 ноября 2010

Схема базы данных должна быть разработана на бумаге или с помощью инструмента ERD .

Это должно быть реализовано в базе данных.

Вы думаете о ORM , подобных Entity Framework , которые позволяют использовать код для генерации базы данных?

Лично я предпочел бы продумать свой дизайн на бумаге, прежде чем сам помещать его в БД.Я был бы рад использовать ORM или генератор классов из этой БД позже.

0 голосов
/ 16 ноября 2010

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

0 голосов
/ 14 ноября 2010

Если ваша проблемная область сложна или ее сложность растет по мере развития системы, вы скоро обнаружите, что вам нужны метаданные, чтобы упростить жизнь.C # может быть хорошим выбором в качестве основного языка для таких вещей, поскольку вы можете использовать его систему типов для принудительного применения некоторых инвариантов (таких как длина char-столбцов, ограничения null / not null или проверки ограничений; вы можете объявить его как consts, enums, так далее).К сожалению, я не знаю, утилиты (sqlmetal.exe могут экспортировать некоторые мета, но только в формате xml), которые могут сделать это из коробки, хотя некоторые инструменты CASE, вероятно, могут быть настроены.Я бы выбрал какой-то специальный генератор для создания схемы БД из C # (всего несколько часов работы по сравнению с обучением, например, варианты настройки, предлагаемые Sybase PowerDesigner).

0 голосов
/ 14 ноября 2010

До VS.NET 2010 я использовал SQL Server Management Studio для проектирования своих баз данных, сейчас я использую конструктор EF 4.0, для меня это лучший путь.

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