Базы данных SQL, модели данных сущностей и сущности от 1 до 1 - PullRequest
0 голосов
/ 18 января 2012

Я довольно новичок в EDM, написав довольно много вещей из ADO.Net в прошлом.У меня есть три таблицы:

**Product:**
Prod_ID - PK

**Product_MaxLoan**
Prod_ID - PK

**Product_MinLoan**
Prod_ID - PK

Эти таблицы, размещенные в MS SQL 2005, не имеют настроенных FK или ограничений, они должны иметь условное отношение 1 к 1.Например, в каждой строке Product с идентификатором 1 будет строка в Product_MaxLoan и Product_MinLoan, каждая с идентификатором 1.

В Visual Studio 2010 я хочу правильно настроить EDM, чтобыкардинальность установлена ​​на 1 к 1. Ранее у меня были ограничения FK для таблиц, и последующие настройки, однако, это позволило бы только кардинальности 0..1 (для обслуживания, я полагаю, для факта, что Продукт может не иметьa Product_MaxLoan или Product_MinLoan).

**Product:**
Prod_ID - PK

**Product_MaxLoan**
ID - PK
Prod_ID - FK

**Product_MinLoan**
ID - PK
Prod_ID - FK

Вопросы:

  • Какой совет вы бы дали для настройки этих таблиц в SQL 2005?Для отношения 1 к 1 в EDM вы бы настроили FK?
  • Можно ли установить отношение PK в SQL 2005, которое EDM будет читать при импорте из базы данных?
  • Продуктсодержит около 300 свойств, поэтому размещение всех этих данных в одной таблице приведет к плохой нормализации базы данных (отсюда множество таблиц 1 - 1).Будет ли наилучшей практикой объединять все эти свойства в один класс EDM?Моя внутренняя реакция заключается в том, чтобы разбить его так, как он структурирован в БД (это мое наследие ADO, на первый план), имея класс для каждой логической части продукта.

Ваш советбудет оценено.

С уважением,

Марка

1 Ответ

0 голосов
/ 18 января 2012

В базе данных используйте эту конфигурацию:

**Product:**
Prod_ID - PK

**Product_MaxLoan**
Prod_ID - PK, FK (to Product)

**Product_MinLoan**
Prod_ID - PK, FK (to Product)

Это приведет к взаимно-однозначному отношению на уровне базы данных, а также в EF. Само отношение будет 1 - 0..1 (Product может существовать без MaxLoan и MinLoan), потому что действительное 1: 1 не может существовать в базе данных. Действительный 1: 1 требует, чтобы обе сущности всегда существовали = вы не можете вставить первую, если вторая не существует, и вы не можете вставить вторую, если первая не существует. Как вы вставляете их, не отключая ссылочную целостность?

...