Поиск идентификатора подкласса из идентификатора суперкласса - PullRequest
0 голосов
/ 18 августа 2011

У меня есть иерархическая структура базы данных с базовой таблицей и несколькими дочерними таблицами:

Base: {ID, Date, ...} 
ChildA: {ID, Color, ...}
ChildB: {ID, Age, ...}

Каждая дочерняя таблица имеет идентификатор, который является внешним ключом для Base.ID;поэтому каждый дочерний элемент связан с идентификатором, который также находится в Base.

Теперь у меня есть ситуация, в которой у меня есть список идентификаторов, и я хочу выяснить, к каким дочерним таблицам они фактически принадлежат. Каков наилучший способ определения дочерней таблицы данного идентификатора?

Я хотел бы иметь функцию, которая возвращает тип из идентификатора: Type TypeFromBaseID(int baseID)

Я могу придумать два способа сделать это, но я надеюсь, что есть лучший способ:

A) Просто добавьте столбец в Base, в котором будет храниться имя таблицы его дочерней таблицы

B) иметь серию операторов if, которые делают что-то вроде db.ChildA.Any(x=>x.ID == baseID)

1 Ответ

1 голос
/ 18 августа 2011

То, что вы предложили в А), фактически то, что в моделировании ЭР известно как «дискриминатор», и мне это кажется более чистым решением.

Я бы просто попросил вас пересмотреть, используя здесь полные имена таблиц. Попробуйте сэкономить место (и производительность) с помощью целых чисел (и четко задокументируйте, какое целое значение «сопоставляется» с какой вложенной таблицей).

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