【发布时间】:2011-04-21 09:59:48
【问题描述】:
有人可以帮我清理一下吗?据我了解,物理模型描述了数据在特定存储介质的上下文中是如何表示的。逻辑模型是实体和关系方面的表示,独立于任何特定的数据管理技术。这两个如何与实体框架一起工作?我假设 EF 对逻辑模型起作用。在这种情况下,物理模型适合哪里?
【问题讨论】:
标签: .net entity-framework database-design
有人可以帮我清理一下吗?据我了解,物理模型描述了数据在特定存储介质的上下文中是如何表示的。逻辑模型是实体和关系方面的表示,独立于任何特定的数据管理技术。这两个如何与实体框架一起工作?我假设 EF 对逻辑模型起作用。在这种情况下,物理模型适合哪里?
【问题讨论】:
标签: .net entity-framework database-design
在EDM(实体数据模型)中,第一个由Store Schema Definition Language (SSDL)表示
第二个是概念架构定义语言 (CSDL)。但是,这个游戏中还有第三者:映射规范语言 (MSL)。
在实体框架元数据中,映射层位于概念层和存储层之间,并提供从实体属性返回到数据存储中的表和列的映射。
Ef,作为一个 ORM,适用于所有三个。针对概念模型的开发人员代码和 EF 使用 MSL 将其映射回存储模型。
【讨论】:
在谈到关系数据库时,逻辑模型是用关系(又名表)、值、键和完整性约束(如外键关系)表示的数据库。 physical 模型是这些数据实际作为数据结构存储在文件或内存中的方式。不同的关系数据库系统可以表示相同的逻辑模型,但物理模型将是系统特定的,并针对不同的目的进行了优化。逻辑-物理映射不必是 1:1,在某些情况下,单个逻辑表可以物理拆分为多个文件甚至几台机器,或者可以将逻辑连接存储(缓存)为单个物理表。这在逻辑层面上应该是透明的,但会影响性能。
SQL 在逻辑级别上工作,因为无论物理表示如何,您都以相同的方式查询表。部分 SQL 方言可能支持基于物理模型特征的优化提示。
因此,在实体框架中,所谓的存储模型实际上是逻辑数据库模型,因为EF存储模型独立于任何特定的数据库实现。物理数据库模型根本没有在 EF 中表示,AFAIK。
EF 然后在此之上构建另一个层,EF 将其称为概念模型。概念模型通常更特定于应用程序。同一数据库上的不同应用程序可能具有基于共享逻辑模型的不同概念模型。 (顺便说一句,EF中的存储模型不一定要代表DB的整个逻辑模型,可以是一个子集。但是包含的子集必须1:1映射到DB的逻辑模型)
【讨论】: