数据库设计 - 类别 - 对象关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库设计 - 类别 - 对象关系相关的知识,希望对你有一定的参考价值。

我必须存储具有不同类型属性的数据库对象。此外,我想将这些对象分组,并且对象可以属于多个类别。

示例对象:

Book (ID, Title, Author, Description)

Movie (ID, Title, Author, Genre) 

Song (ID, Title, Singer, Year)

到目前为止,我尝试了两种方法:

方法1

使用字段(ID,CategoryName)创建Category表。

创建一个通用表并尝试将表字段与对象属性匹配。使用帮助程序表中的对象加入该类别

_CategoyObject_ (_CategoryID_, _ObjectID_).

这似乎是一种不好的做法,因为我们在常规表中有许多具有空值的列。同样参考this文章的第一点,将不同的对象存储在同一个表中是一种不好的做法。

方法2

使用字段(ID,CategoryName)创建Category表。

为每个对象创建表。

创建一个帮助表,以将categories表与对象表的名称链接:

 _CategoyObject_ (_CategoryID_, *Object_Table_Name*)

如果我们想要获取给定类别的对象,此方法可以帮助我们找到要创建连接的表的名称。

但这会使查询复杂化,因为我们应该有一个查询来获取某个类别的表,另一个查询来获取对象的记录

这更难,因为我目前首先使用Entity Framework代码来创建数据库。

使用ADO.NET而不是实体框架获取数据以便于数据检索更方便吗?

你能否告诉我任何其他方法更简单的问题:

获取属于X类别的所有对象?

获取Y对象属于哪个类别?

答案

创建三个表,并将其称为电影,书籍和歌曲。这样,您就不需要查找表的名称。当您需要书籍时,您将“从书本中选择*”。

以上是关于数据库设计 - 类别 - 对象关系的主要内容,如果未能解决你的问题,请参考以下文章