Так что в настоящее время я работаю над перестройкой существующего веб-сайта, который используется в моей компании для управления проектами, в основе которого лежит утилита отслеживания ошибок, с которой связаны некоторые операции по поддержке клиентов и учетные операции.
В настоящее время модель базы данных является очень повторяющейся, хорошим примером этого является то, что в настоящее время UserId связан с записью (отношение FK в пользовательской таблице, которая содержит всю информацию о пользователе), а затем всю информацию о пользователе также существует в таблице.
Мне было поручено улучшить сайт и функциональность модели; однако я хочу уменьшить количество повторений данных на веб-сайте (это нормализация или разделение несвязанных элементов на отдельные таблицы?). Я не уверен, что лучший способ сделать это будет. Я подумываю о создании сценариев создания базы данных и создании нового проекта базы данных в VS для последующего изменения базы данных, а затем создания некоторых сценариев для заполнения новой модели базы данных из старой базы данных.
Я планирую использовать Entity Framework и ASP. NET MVC 2 для создания веб-сайта, так как я считаю, что он обеспечивает наиболее гибкую модель продвижения и модификации веб-сайта.
Причина, по которой я спрашиваю обо всем этом, заключается в том, что я хорошо знаком с использованием баз данных и модификацией существующих для приложений и веб-сайтов, но я пытаюсь найти лучший способ его создания.
Мне любопытно, есть ли какой-нибудь материал о наилучшем способе сделать это или мне следует использовать другой инструмент для этого?
Редактировать: Предоставление дополнительной информации о модели
Мы используем 4 основных области:
- Случаи (ошибки, особенности, рабочие задачи и т. Д.)
2. Билеты (мероприятия технической поддержки)
- Ошибки (ошибки, сгенерированные из нашей библиотеки журналов, в основном трассировка стека с информацией о клиентах)
- Лицензия (Отслеживает каждого клиента Лицензия позволяет модифицировать эти лицензии)
Это объекты, которые смешаны и используются во всех 4 основных областях.
- Пользователи (Люди, которые используют систему)
- Клиенты (Люди, которые используют наше программное обеспечение)
- Магазины (места, где наши клиенты используют наше программное обеспечение)
- Продукты (наше программное обеспечение)
Отношения
Случаи:
Случаи должны иметь пользователя, могут иметь клиента, магазин, ошибку, тикет и / или продукт
Билеты
Билет должен иметь пользователя и клиента, может иметь магазин, ошибку и / или продукт
Ошибка:
Ошибка должна иметь продукт, может иметь дело, билет, магазин и / или продукт
Лицензия:
Лицензии должны иметь Продукт и Клиента, могут иметь Магазин
Как я сказал, очень простой веб-сайт, с не очень сложной базой данных, если все сделано правильно.
В настоящее время база данных не имеет ограничений FK, репликации большого количества информации по каждой таблице и множества дополнительных таблиц, которые являются дубликатами с разными именами.
например.
Каждый тип Case имеет отдельную таблицу, поэтому есть таблица FeatureRequest, Bug, Tasks, Completed и т. Д., Которые содержат одинаковую информацию.