Database design “中的方向性”;“对象模型”;vs";“数据库模型”;

Database design “中的方向性”;“对象模型”;vs";“数据库模型”;,database-design,object-model,Database Design,Object Model,当我们谈论方向性(单向或双向)时,我们通常指的是对象模型,这样说对吗?(我还没有看到有人在设计数据库时使用它) “对象模型”和“数据库模型”中的方向性必须相同吗?考虑一个雇员和部门实体的例子: 对于“数据库模型”,我想指定这是一种单向关系,其中许多员工在同一个部门;然而,我不需要指定一个部门有哪些员工 对于“对象模型”,我想指定这是一种双向关系,其中Employee对象将具有Department对象,Department对象将具有Employee对象的集合 谢谢 当我们谈论方向性(单向或双向

当我们谈论方向性(单向或双向)时,我们通常指的是对象模型,这样说对吗?(我还没有看到有人在设计数据库时使用它)

  • “对象模型”和“数据库模型”中的方向性必须相同吗?考虑一个雇员和部门实体的例子:

    • 对于“数据库模型”,我想指定这是一种单向关系,其中许多员工在同一个部门;然而,我不需要指定一个部门有哪些员工

    • 对于“对象模型”,我想指定这是一种双向关系,其中Employee对象将具有Department对象,Department对象将具有Employee对象的集合

  • 谢谢

    当我们谈论方向性(单向或双向)时,我们通常指的是对象模型,这样说对吗?(我还没有看到有人在设计数据库时使用它)

    当人们谈论一对一、一对多和多对多关系时,他们暗指的是从一个表“a”到另一个表“B”的关系的(单向)方向性。可能存在将“B”记录引用回“A”(作为单独的字段)的情况—使其具有双向性。这些情况通常涉及非简单的删除/更新查询,因为引用完整性检查可能会导致问题

    “对象模型”和“数据库模型”中的方向性必须相同吗

    也许是出于设计,通常不是在实践中。以您和我上面的stmt为例:为了维护哪些部门有哪些员工的列表,为了提高查询性能,您可以创建第三个表——当然,当EMP或部门发生变化时,可以更新该表。这将保持从B到A的反向关系。这将使其类似于对象模型,因为您将计算哪些部门具有哪些EMP,并将其存储回Depts对象中

    或者,在您的对象模型中(为了使其与DB模型保持一致),您可以做的是:每次您想要显示哪些部门有哪些员工,您可以迭代您的Emp对象,并让它们的_dept属性每次都计算它。这就像没有第三个表的A到B db模型一样

    反向引用obj模型中的指针分配/obj引用是否存在问题,取决于您使用的编程语言的具体情况,以及您是否在Dept对象中清理已删除/更新的EMP。在C++中,可以自己管理指针,而不会出现问题。不确定某些高级语言会允许什么。
    (自我提醒:他们的垃圾收集会导致问题吗?)