gpt4 book ai didi

mysql - 数据库模式知识边界

转载 作者:行者123 更新时间:2023-11-29 22:42:40 24 4
gpt4 key购买 nike

我正在努力弄清楚将数据库知识放在哪里。

例如:

假设我们有一个包含不同企业运营商的数据库,他们在不同的州和不同类型的设备中运营。运算符(operator)可以在多个州和多家公司工作,使用不同类型的设备。

因此,要对我的数据库模型进行建模:

Operator table (dni, id)Company table (name, id)Equipment table (name, id)States table (name, id)

和关系表

OpComEq (idOp, idComp, idEq)OpComSt (idOp, idComp, idSt)

所以如果我们想要检索一个运算符,我们就必须交叉查询。如果一家公司告诉我们某个特定的运算符(operator)不再与他们合作,我们必须删除该运算符(operator)与该公司与州和设备的所有链接,并检查是否仍然存在与该运算符(operator)的任何链接(他可能是在另一家公司工作等),如果不是,则从运算符(operator)数据库中删除他。

我遇到的问题是不知道在哪里封装这些知识,在数据库类中还是在 Operator 类中,或者可能是另一个类。

我知道这是一个具体的例子,但这是一个抽象问题,我打赌已经解决了,但我找不到为此的设计模式。你能帮我解决这个问题吗?

最佳答案

我不确定我是否完全理解这个问题,但如果我完全理解,那么就没有解决方案。这个问题众所周知,被称为Object-Relational Mismatch (或阻抗)。

在关系数据库中存储数据会施加某些规则 - 例如满足 3NF - 这限制了数据的组织方式。使用 OOP 编写代码会施加不同的约束。两者导致代码组织和数据组织不匹配。你只需要忍受它。

(顺便说一句,如果您确实想出了一个通用的解决方案,请让我们都知道 - 生活会更美好!)

关于mysql - 数据库模式知识边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29255810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com