Дизайн базы данных для ограниченного числа вариантов в MVC и Entity Framework? - PullRequest
1 голос
/ 01 марта 2011

Я действительно не знал, что поставить в заголовок к этому вопросу, но вот что:

Если я хочу иметь возможность иметь консультанта за столом, который является пользователем и его личной информацией, и я хочу, чтобы этот пользователь мог выбирать уровень своего мастерства в ряде Программ (программного обеспечения) по шкале от 0 до 5 (ноль без опыта), как мне это лучше всего сделать?

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

Мне кажется, у меня должна быть таблица со всеми (ограниченным числом) программ, а затем с помощью какой-то связи между ними по идентификаторам. Но я не могу понять, как это сделать. Я думаю, что многие ко многим ... Но сначала это правильно? Во-вторых, как мне это сделать в Entity Framework Model? Я обычно сначала создаю свой код базы данных, то есть создаю модель EF, а затем генерирую базу данных из модели. Получу ли я соединительную таблицу, в которую я могу добавить поле уровня, потому что в основном у консультанта есть программа с уровнем или фактически список программ, каждая из которых имеет уровень.

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

1 Ответ

1 голос
/ 01 марта 2011

Создайте три таблицы:

  • Консультант
  • Программа
  • ConsultantProficiency

Консультант по эффективности будет иметь следующие столбцы:

  • ConsultantId - FK для консультанта
  • ProgramId - FK для программирования
  • Уровень

Пометить ConsultantId и ProgramId как PK таблицы.

Добавьте эти таблицы в модель сущности - она ​​создаст три сущности со всеми связями и свойствами навигации. Вы также можете начать с этого в EDMX и позволить EF генерировать БД для вас.

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

...