Database design 数据库设计中的循环和陷阱

Database design 数据库设计中的循环和陷阱,database-design,business-objects,mariadb,Database Design,Business Objects,Mariadb,我已经开始在一家公司的MariaDB中设计一个数据库。这是我第一次做这件事。(以前我在数据仓库中为业务对象工作) 但是,我已经创建了表,并按照要求连接了它们 在我创建的布局中,我遇到了环路、裂缝陷阱和风扇陷阱。我需要在处理数据库之前解决它们吗 我在互联网上对这些问题进行的所有搜索都会获取有关使用别名和上下文在Universe Designer(业务对象中的工具)中解决这些问题的结果。因此,如果我需要为一个设计好的数据库解决这些问题,或者如果您正在使用Universe Designer,那么这些问

我已经开始在一家公司的MariaDB中设计一个数据库。这是我第一次做这件事。(以前我在数据仓库中为业务对象工作)

但是,我已经创建了表,并按照要求连接了它们

在我创建的布局中,我遇到了环路、裂缝陷阱和风扇陷阱。我需要在处理数据库之前解决它们吗

我在互联网上对这些问题进行的所有搜索都会获取有关使用别名和上下文在Universe Designer(业务对象中的工具)中解决这些问题的结果。因此,如果我需要为一个设计好的数据库解决这些问题,或者如果您正在使用Universe Designer,那么这些问题只是要解决的,我会感到困惑

如果需要解决,请让我知道如何在数据库中解决这些问题。如果可能,请提供一些参考资料。

裂缝和风扇“陷阱”不是设计的属性。它们是不正确地使用数据库的一种方式,它是基于设计的某些属性(即约束)而不是正确地(即表的含义)盲目地编写(错误的)查询。在您的设计中具有这样的属性并不意味着有任何问题。当然,您可能仍然选择了错误的基表

每个基表在描述应用程序情况的-[named-]blanks语句中都有一个对应的谓词aka fill。谓词中空格的名称是表的列。基表包含构成true语句的行。每个查询表达式通过JOIN、UNION、SELECT、EXCEPT、WHERE条件等组合基表名称,并具有一个相应的谓词,该谓词通过(分别)and、OR、EXISTS、NOT和condition等组合基表谓词。查询结果包含构成true语句的行

表及其谓词都表示应用程序关系。(又名关系。因此是关系模型和实体关系建模。)表包含满足谓词的行。在不知道谓词的情况下,无法更新或解释表。许多设计方法和产品并没有把这一切都说清楚

但是在ERM和ORM(糟糕的表示)中被称为“关系”的箭头/线条表示的不是应用程序关系,而是约束。它们是已知的限制,限制了根据谓词设置基表时数据库的状态。它们与编写查询无关。(虽然对基表值的限制自然会反映为查询结果中的限制。)因此没有什么需要“解决”的

这些箭头/线中的“循环”又称循环,只是反映了某些多表约束,这本身并没有什么问题。但是与外键约束相对应的箭头/线也被SQL DBMS用于级联,因为这样的多表约束经常需要多表更新。级联必须是非循环的。碰巧有些DBMS将约束表达式限制为限制级联的副产品。因此,您可能必须“解析”它们才能满足这样的DBMS


请参见和。

这是一个相当广泛的问题。一般来说,最好在数据库中解决这些问题,因为它不仅使universe开发更容易,而且还支持非BO查询。但这并不总是可行的。也就是说,数据集市的设计可能有一个很好的理由,你只需要在宇宙中围绕它工作。如果你能更具体地回答你的问题,我也许能提供更好的指导。你“遇到”循环和陷阱的确切意思是什么?你的设计图片中有一些箭头?您正在编写的SQL没有返回所需的行?“解决”它们意味着什么?