【问题标题】:Storage and Logical Model in Entity Framework实体框架中的存储和逻辑模型
【发布时间】:2011-04-21 09:59:48
【问题描述】:

有人可以帮我清理一下吗?据我了解,物理模型描述了数据在特定存储介质的上下文中是如何表示的。逻辑模型是实体和关系方面的表示,独立于任何特定的数据管理技术。这两个如何与实体框架一起工作?我假设 EF 对逻辑模型起作用。在这种情况下,物理模型适合哪里?

【问题讨论】:

    标签: .net entity-framework database-design


    【解决方案1】:

    EDM(实体数据模型)中,第一个由Store Schema Definition Language (SSDL)表示 第二个是概念架构定义语言 (CSDL)。但是,这个游戏中还有第三者:映射规范语言 (MSL)
    在实体框架元数据中,映射层位于概念层和存储层之间,并提供从实体属性返回到数据存储中的表和列的映射。
    Ef,作为一个 ORM,适用于所有三个。针对概念模型的开发人员代码和 EF 使用 MSL 将其映射回存储模型。

    【讨论】:

    • 感谢您的回复。以上我都知道。我有点不清楚的是存储模型实际上适合我的定义。如果 EDM 是从逻辑模型映射到概念模型,我们如何从逻辑模型映射到物理模型?或者 EF 中的存储模型也是逻辑模型,在这种情况下我们失去了逻辑模型独立于数据库存储介质的抽象?还是我错过了什么?再次感谢。
    • 或者说MSL是逻辑模型?
    • 逻辑模型和概念模型基本上是一回事。它只是用 2 个名字调用同一个东西。当您从“域模型”的角度来看它是逻辑模型时,当您从 ORM 的角度来看时,将其称为概念模型更有意义,但实际上它都是指从数据库表映射的对象模型(又名存储模型)由 EF 提供。
    • 但是根据我的理解,从数据架构师的角度来看,逻辑模型和物理模型意味着逻辑模型与从软件架构师的角度来看的域模型不同。物理模型专注于特定的数据库,例如Oracle/SQL Server,逻辑模型从数据库实现中抽象出来,但仍然以数据库为重点,概念/领域模型是面向对象模型的表示,并且由于重点来自业务而不受到存储问题的驱动而有所不同。除非我的理解在这里不正确?谢谢
    • “逻辑模型是构成设计/分析空间的对象和类的静态视图。通常,域模型是业务对象和实体的更松散的高级视图,而逻辑模型是一个更严格且以设计为重点的模型。”
    【解决方案2】:

    在谈到关系数据库时,逻辑模型是用关系(又名表)、值、键和完整性约束(如外键关系)表示的数据库。 physical 模型是这些数据实际作为数据结构存储在文件或内存中的方式。不同的关系数据库系统可以表示相同的逻辑模型,但物理模型将是系统特定的,并针对不同的目的进行了优化。逻辑-物理映射不必是 1:1,在某些情况下,单个逻辑表可以物理拆分为多个文件甚至几台机器,或者可以将逻辑连接存储(缓存)为单个物理表。这在逻辑层面上应该是透明的,但会影响性能。

    SQL 在逻辑级别上工作,因为无论物理表示如何,您都以相同的方式查询表。部分 SQL 方言可能支持基于物理模型特征的优化提示。

    因此,在实体框架中,所谓的存储模型实际上是逻辑数据库模型,因为EF存储模型独立于任何特定的数据库实现。物理数据库模型根本没有在 EF 中表示,AFAIK。

    EF 然后在此之上构建另一个层,EF 将其称为概念模型。概念模型通常更特定于应用程序。同一数据库上的不同应用程序可能具有基于共享逻辑模型的不同概念模型。 (顺便说一句,EF中的存储模型不一定要代表DB的整个逻辑模型,可以是一个子集。但是包含的子集必须1:1映射到DB的逻辑模型)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      相关资源
      最近更新 更多