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

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对象属于哪个类别?

答案

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

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

python面向对象编程设计与开发

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

数据库设计中常见表结构分析

设计模式 - 中间人模式

hibernate对象关系实现多对多实现

如何在 has_many 关系中急切加载最新的对象?