Я должен хранить в базе данных объекты с различными видами свойств. Также я хочу сгруппировать эти объекты по категориям, и объект может быть частью нескольких категорий.
Пример объектов:
Book (ID, Title, Author, Description)
Movie (ID, Title, Author, Genre)
Song (ID, Title, Singer, Year)
До сих пор я пробовал два метода:
Метод 1
Создание таблицы Category с полями ( ID , CategoryName).
Создайте общую таблицу и попытайтесь сопоставить поля таблицы со свойствами объекта.
Объединить категорию с объектами в таблице помощников
_CategoyObject_ (_CategoryID_, _ObjectID_).
Это кажется плохой практикой, потому что в общей таблице у нас много столбцов с нулевыми значениями. Также, ссылаясь на первый пункт в этой статье , неправильно хранить разные объекты в одной таблице.
Метод 2
Создание таблицы Category с полями ( ID , CategoryName).
Создать таблицу для каждого объекта.
Создать вспомогательную таблицу для связи таблицы категорий с именем таблицы объектов:
_CategoyObject_ (_CategoryID_, *Object_Table_Name*)
Этот метод может помочь нам найти имя таблицы для создания объединения, если мы хотим взять объекты для данной категории.
Но это усложняет запрос, потому что у нас должен быть один запрос для получения таблиц для определенной категории и другой запрос для получения записей объектов
Это еще сложнее, потому что в настоящее время я сначала использую код Entity Framework для создания базы данных.
Лучше ли получать данные с помощью ADO.NET вместо Entity Framework для более удобного поиска данных?
Можете ли вы предложить мне другой способ, который проще для вопросов:
Получить все объекты, которые относятся к X категории?
Получить к какой категории Y принадлежит объект?