Я довольно новичок в инфраструктуре сущности и хочу реализовать ее наилучшим образом. Я хотел бы знать, можно ли реализовать идеи, которые я могу реализовать, и если они являются лучшими практиками.Правильное создание модели данных сущности
Модель 1
То, что я хотел бы здесь в основном использовать заказы и адреса лиц, чтобы иметь возможность использовать ту же таблицу поиска. Идея таблицы поиска состоит в том, чтобы иметь возможность скрывать/показывать все ордеры или все Адреса для конкретного пользователя, имея свойство в объекте поиска, которое может хранить коллекции общих объектов.
Модель 2
Это очень тот же принцип, как описано выше, за исключением того, что это с помощью навигационных свойств, а не скалярную свойства. Я думаю, что это правильный путь, но не уверен, есть ли проблемы, с которыми я могу столкнуться.
Спасибо за вашу помощь
======= Добавлено 16/12/2013 ==============
Я хочу немного расширить эту модель, получив некоторое наследование для пользователя. В основном есть 3 разных типа пользователей, которые в настоящее время имеют большинство свойств, но в будущем они могут иметь несколько свойств, специфичных для них. Чтобы помочь в этом, я придумал модель ниже.
Теперь, когда я пытаюсь добавить стипендиат, например, он справедливо жалуется, что
«Инструкция INSERT заявление противоречит ограничению внешнего ключа„FK_HonoraryMemberLookup“, который я предполагаю, означает, что он пытается чтобы добавить поиск для двух других типов пользователей и не может из-за нулевых значений.
Как можно было бы структурировать таблицу поиска, чтобы избежать этой ошибки? Должны ли я иметь отдельные таблицы поиска для каждого из типов пользователей?
Еще раз спасибо
Я не совсем уверен, что вы действительно оптимизируя здесь. Запрос для получения списка заказов (или адресов) теперь потребует двух JOIN вместо одного. Заказы и адреса довольно ортогональны друг другу, поэтому здесь нет смысла использовать одну иерархию наследования таблицы. Если поле IsPublic немного, вы оптимизируете сохранение одного бита на запись. Едва ли это стоит. –
Спасибо Брайан. Итак, что вы предлагаете, имеет свойство IsPublic bool для объектов Orders and Addresses? Имеет смысл, но так как было бы около 20 других объектов, которым понадобилось бы свойство IsPublic, которое я, почему я пытался объявить его один раз. Думая об этом, возможно, у меня может быть сущность с полем IsPublic, и у ордеров и Адресов наследуется от этого объекта. Это создаст какие-либо проблемы? – user3096080