Наиболее эффективный (для чтения) способ моделирования отношений «один ко многим» с EF4 - PullRequest
1 голос
/ 30 июля 2010

Это довольно простой вопрос (или, по крайней мере, с самого начала).

Я ищу эффективные способы смоделировать отношения Один-ко-многим, когда множество одного типа.

Пример

Скажем, у нас есть Лицо-сущность, и у этого человека есть 0 для множества Суб-лиц, а у Суб-лиц есть 0 или 1 Родитель-лицо.

Ответ должен учитывать оптимизацию чтения и простоту запросов от Linq до Entity Framework. Ответы, относящиеся к базовой структуре таблицы базы данных для лучшей производительности чтения, также очень приветствуются (при условии, что они могут быть отображены в EF4).

1 Ответ

1 голос
/ 03 августа 2010

Это похоже на случай использования внешнего ссылочного ключа. (Оракул)

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

Определение таблицы и определение ограничения будут такими:

CREATE TABLE EMP
(
  EMPNO     NUMBER(4)                           NOT NULL,
  ENAME     VARCHAR2(10 BYTE),
  JOB       VARCHAR2(9 BYTE),
  MGR       NUMBER(4),
  HIREDATE  DATE,
  SAL       NUMBER(7,2),
  COMM      NUMBER(7,2),
  DEPTNO    NUMBER(2)
)

и ограничение будет ..

alter table emp add constraint fk_emp_mgr
foreign key mgr references emp(empno);

Это означает, что идентификатор менеджера для данного сотрудника должен быть самим сотрудником. Вот пример данных.

EMPNO ENAME JOB MGR

7369 SMITH CLERK 7902
7499 ALLEN SALESMAN 7698
7521 WARD SALESMAN 7698
7566 JONES MANAGER 7839
7654 MARTIN SALESMAN 7698
7698 BLAKE MANAGER 7839
7782 CLARK MANAGER 7839
7788 SCOTT ANALYST 7566
7839 KING PRESIDENT 
7844 TURNER SALESMAN 7698
7876 ADAMS CLERK 7788
7900 JAMES CLERK 7698
7902 FORD ANALYST 7566
7934 MILLER CLERK 7782

Как видите, у всех сотрудников есть менеджер (кроме KING, который является руководителем компании). каждый из них, в свою очередь, является сотрудником.

Обратите внимание, что это модель, которая подходит и идеально подходит для систем в стиле OLTP. Не существует избыточных данных, и соблюдаются ограничения целостности данных.

...