我正在学习PostgreSQL,目前正在学习类型以及如何创建它们.然而,我不明白什么时候创建一个表并与另一个表建立关系比只创建一个类型更好.

例如,在这个类图中,"团队"拥有"设备"类型的"设备".我甚至不知道这个图表是否正确,但如果正确,为什么让"设备"成为一个类型而不是一个表更好?

class diagram team

推荐答案

模型

此图表不正确.它说TeamEquipments组成,如果Team被删除,Equipments将被删除.go 掉黑钻石就没事了.

By the way, the arrow is not wrong, but it is not necessary if your UML class diagram is meant for a relational model: the implementation of an association with an RDBMS will always make it bidirectional.

数据库

用户定义的数据类型是一种SQL特性,允许创建由多个元素组成的复合类型.目标是您可以使用新创建的类型,如内置类型.

如果您在postgresql中为您的模型创建了两个用户定义的类型,那么您无论如何都必须创建两个表,每个表都有一个给定类型的列(更多解释here).因此, Select SQL类型来实现UML类并没有决定性的优势.

如果您使用的是值对象,那么在SQL中创建类型最为可取.值对象没有标识,仅由它们所承载的值定义.它们通常是相同或不同类/表中多个属性的类型.

By the way, in an UML model, you should in principle represent value types with 100 classifiers. But some people model such value types with normal classes and it's a topic of discussion.

业务应用程序中的值对象的一个典型示例是由货币值和货币代码组成的CurrencyAmount.

Mysql相关问答推荐

SQL - Select 复合主键,条件为其中一个主键

为什么我的带有索引字段和非索引字段的 Select 有时需要很长时间

无法确定查询逻辑

为什么歌曲详细信息未显示在 Liked.handlebars 视图中?

如何在sql中包含0作为计数?

获取连续11天未考勤的员工

为什么Mysql会根据查询参数改变查询执行计划?

状态为已发货的订单返回产品总数量的SQL(不同的两张表)

在 SQL 中 for each 组返回具有最大值的行,包括具有相同值的行

当查询 MySQL 的 goroutine 过多时,Go 会出现panic

查询获取日期之间的可数匹配条目并加入它们以读取用户状态

MySQL 中的 LATERAL 语法 - 是否只是说左表首先执行以便下一个可以引用它?

无法通过迁移在现有表中插入行 - Rails 6

DECIMAL(m, n) 在 64 位系统中如何表示?

在 MySQL 的存储过程中调用存储过程

MySQL触发器在某些条件下防止INSERT

PHP 判断 NULL

MySQL:ALTER IGNORE TABLE 给出违反完整性约束

来自 MySQL 中多个表的 COUNT(*)

如何将 MySQL 数据库导出为 JSON?