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

时间:2018-08-31 13:17:12

标签: sql database entity-framework database-design ado.net

我必须将具有不同类型属性的对象存储在数据库中。另外,我想将这些对象归为一类,并且该对象可以属于多个类别。

示例对象:

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 表。

为每个对象创建表。

创建一个帮助器表以将类别表与对象表的名称链接起来:

 _CategoyObject_ (_CategoryID_, *Object_Table_Name*)

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

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

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

使用ADO.NET而不是Entity Framework获取数据是否更好,以便于数据检索?

您能建议我其他比问题更简单的方法吗?

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

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

1 个答案:

答案 0 :(得分:0)

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