当前位置: 首页 > 面试题库 >

具有多个类别类型数据库架构的产品

龚征
2023-03-14
问题内容

我想存储有关歌曲文件的信息,这些文件按以下类别分类:
1.流派,例如流行,摇滚,古典等
。2.使用乐器,例如钢琴小提琴等
。3.艺术家
每首歌曲都有许多乐器。每首歌都有很多歌手。
因此,所有关系都是多对多的。我该如何实施?在歌曲实体和这三个类别类型的实体之间建立多对多关系是个好主意吗?还是我应该只有一个继承那些子类别的类别实体?
提前致谢


问题答案:

乐器和艺术家都是“具有”关系的例子。该类型是“是”关系的一个示例。在关系数据库设计中,Has-a和Is-
a关系的建模完全不同。歌曲是流行歌曲,或者歌曲是摇滚歌曲。(我想这首歌既可以流行又可以是摇滚,但是在您的描述中并不清楚)。

Has-a关系更为常见,通常在任何好的教程中都会涉及到。在这些相同的教程中,通常不会对Is-a关系进行足够的介绍。如果要获取有关is-
a关系的ER建模的文章,请查找“一般化/专业化”。这将解释如何描述这些关系之一,而不是如何设计适合的表。

如果您熟悉对象建模,则最简单的概念称为类/子类模式(也称为类型/子类型)。这很简单,但是取决于对继承的内置支持。这种支持通常存在于任何对象系统中,并且为您完成了大多数艰苦的工作。如果您正在设计一个关系数据库,您将面对一个事实,即关系模型不直接支持继承。这意味着除非您愿意使用SQL方言中可用的SQL扩展名,否则您必须设计表来模仿继承的好处。

这两个标签的名称已知两种相对标准的设计: 单表继承
类-表继承

您可以通过阅读每个标签的“信息”标签来获得简要说明。通过查找Martin Fowler对这两种模式的处理,您可以获得更好的描述。

单表解决方案将帮助您为所有歌曲文件创建一个表,其中的列与任何或所有类别相关。

类表解决方案将帮助您为歌曲文件设计一个表,为每种流派设计一个表。如果您使用共享主键技术,从而使流派表中的每个条目从歌曲文件表中的相应条目中“继承”其ID,将很有帮助。当您插入新的歌曲文件时,必须通过额外的编程使这种继承发生。

哪一个更好?这取决于您的情况。你决定。



 类似资料:
  • 问题内容: 我可以用来存储多种不同类型的数据(整数/字符串/等)?我来自PHP背景,可以将不同类型的数据存储到数组中,但是我不知道如何在Java中进行操作。 举个例子: 如何用Java做类似的事情? 问题答案: Java是一种强类型语言。在PHP或Javascript中,变量没有严格的类型。但是,在Java中,每个对象和基元都有严格的类型。您可以将多种类型的数据存储在Array中,但只能将其作为对

  • 我有一个gradle android项目,有两个模块: 穿 在我的gradle配置中,我有不同的构建类型。默认设置(debug和release,每个都有自定义设置)以及dev和beta构建类型(也有自定义签名、自定义proguard和自定义applicationIdSuffix)。 我现在想做的是使用构建类型测试版(gradle清洁组件测试版)构建应用程序包。这就开始在测试版中构建应用程序,看到它

  • 我有以下Java问题 我有以下通用类,它们可能被描绘为: 其中

  • 问题内容: 我在使用JPA / Spring遇到一个特定问题时遇到了一些麻烦: 如何为实体动态分配架构? 我们有属于模式AD的TABLE1和位于BD下的TABLE2。 架构可能不会在注释属性中进行硬编码,因为它取决于环境(Dev / Acc / Prd)。(接受的模式是S1A和S2A) 我该如何实现?是否可以指定这样的占位符: 以便根据驻留在环境中的属性文件替换架构? 干杯 问题答案: 我有一个相

  • 我有一个(相当复杂的)数据类型: 现在我发现自己需要另一个数据类型…有两个构造函数。一个与的相同;另一个只存储一个。我有什么选择? 虽然这会起作用,但它也允许类似这样的东西,这是没有意义的。

  • 问题内容: 我可以用来自1个班级的不同数据填充表格视图。但这不适用于多个班级。知道如何解决吗?我已经检查了关于stackoverflow的类似问题。但是他们都帮不了我。如果您对“回调”类有任何建议,请提供完整的导入信息,因为那里有几个回调类。 进一步的问题:如何在TableCell的HashSet中显示实例的某个属性。所以我在TaskControl类中有一个HashSet。在该HashSet中,有