Проектирование базы данных - отношение Категория-Объект - PullRequest
0 голосов
/ 31 августа 2018

Я должен хранить в базе данных объекты с различными видами свойств. Также я хочу сгруппировать эти объекты по категориям, и объект может быть частью нескольких категорий.

Пример объектов:

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 принадлежит объект?

1 Ответ

0 голосов
/ 31 августа 2018

Создайте три таблицы и назовите их фильмами, книгами и песнями. Таким образом, вам не нужно искать название таблицы. Когда вам нужны книги, вы будете «выбирать * из книг».

...