【问题标题】:Loops and traps in database design数据库设计中的循环和陷阱
【发布时间】:2014-08-27 13:21:55
【问题描述】:

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

但是我已经创建了表格并按照要求加入了它们。

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

我在互联网上对这些问题进行的所有搜索都获取了有关使用别名和上下文在 Universe Designer(Business Objects 中的工具)中解决这些问题的结果。因此,如果我需要为设计后的数据库解决它们,或者如果您正在使用 Universe Designer 来解决这些问题,我会感到困惑。

如果要解决,请告诉我如何在数据库中解决它们。如果可能,请提供一些参考资料。

【问题讨论】:

  • 这是一个相当广泛的问题。在general中,首选在数据库中解决这些问题,因为它不仅使 Universe 开发更容易,而且还支持非 BO 查询。但这并不总是可行的。也就是说,数据集市设计可能有充分的理由,您只需要在宇宙中解决它。如果您的问题可以更具体一些,我或许可以提供更好的指导。
  • 您“遇到”循环和陷阱究竟是什么意思?您的设计图片中有某些箭头吗?您正在编写的 SQL 没有返回您想要的行? “解决”它们是什么意思?

标签: database-design business-objects mariadb


【解决方案1】:

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

每个基表都有一个相应的谓词,即填充-[命名-]空白语句,描述应用情况。谓词中空格的名称是表的列。基表包含做出正确陈述的行。每个查询表达式通过 JOIN、UNION、SELECT、EXCEPT、WHERE 条件等组合基表名称,并具有相应的谓词,该谓词通过(分别)AND、OR、EXISTS、AND NOT、AND 条件等组合基表谓词。 result 包含做出正确陈述的行。

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

但是在 ERM 和 ORM 中(表现不佳)中被称为“关系”的箭头/线表示的不是应用程序关系,而是约束。它们是对每个谓词设置基表的数据库状态的已知限制。它们与编写查询无关。 (虽然对基表值的限制自然会在查询结果中体现为限制。)所以没有什么要“解决”的。

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

请参阅 this answerthis one

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 2011-01-02
    相关资源
    最近更新 更多