我必须将具有不同类型属性的对象存储在数据库中。另外,我想将这些对象归为一类,并且该对象可以属于多个类别。
示例对象:
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 对象属于哪个类别?
答案 0 :(得分:0)
创建三个表,并将它们称为电影,书籍和歌曲。这样,您将不需要查找表的名称。当您需要书籍时,可以“从书籍中选择*”。