【问题标题】:How to model a database structure with repeating fields in every table如何使用每个表中的重复字段对数据库结构建模
【发布时间】:2013-10-29 12:52:08
【问题描述】:

我正在为我的新项目构建一个数据库模型。对于我的模型中的所有实体(这是一个 cms,以及诸如 f.ex 的实体:页面、内容、菜单、模板和一堆其他实体),它们在日期和名称上都具有相同的属性。

更具体地说,每个实体包含以下日期:IsCreated、IsValidFrom、IsPublished、IsDeleted、IsEdited 和 IsExpired,以及名称:CreatedByNameId、ValidFromByNameId、PublishedByNameId 等等...

我将使用 EF5 映射到对象。

问题很简单:构建此结构的最佳方法是什么:在每个表中都有所有字段(我没有义务...)或有两个单独的表,另一个可以关联.. .?

在此先感谢 /Finn。

【问题讨论】:

  • 这不是 Stack Overflow 的主题,因为它不是一个特定的编程问题并且是基于意见的(这是最好的......)
  • 不过,我认为这可能是一个编程问题!也许可以将所有重复的字段放在一个表 i db 中,然后制作一个 t4 模板,其中一个表的映射对象可以是其余映射对象的基类...?还是我的想法在这里……?
  • 也许这个标题有点误导,因为我在字里行间假设这个结构应该是代码中的“可行”结构作为映射对象......

标签: database model structure


【解决方案1】:

首先 - 阅读一下 - http://www.agiledata.org/essays/mappingObjects.html

您确实需要考虑您的查询/访问路径。不同实现之间有很多权衡。

不过,在回复您的示例时,

鉴于以下设置:

常见

ValidFromByNameId

具体1

字段A

具体2

字段B

通过 COMMON 属性进行查询很容易,但是在提取子类时您必须使用一些魔法(除非 EF5 为您执行此操作)

如果您要问的主要问题是关于 specific1 和 specific2,那么这可能不是正确的模型。拥有 COMMON 表并没有真正给您带来太多必要,因为它会引入一个连接来加载任何 Specific1 对象。在这种情况下,我可能只是有重复的列。

这个答案是故意的,因为完整的答案最好由已经存在的众多文章和博客来处理。搜索“将对象层次结构映射到数据库”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多