【问题标题】:database relationship to many tables and representation in entity framework实体框架中与许多表和表示的数据库关系
【发布时间】:2010-12-07 19:45:41
【问题描述】:

两部分问题:

第一 给定以下场景,设置表/关系结构的最佳方法是什么:我有许多表存储不同类型的数据(即:书籍、电影、杂志 - 每个表都作为不同的表),然后是一个存储评论的表,可以链接到任何表类型。因此,评论表中的一行可以链接到书籍或杂志表。

我现在拥有的是第三个表,它定义了可用的表并为它们提供了一个 ID 号。最终没有存储从评论到书籍的真实关系。这是最好的方法吗?

第二 如何在实体框架中表示虚假关系?我可以做一个连接 3 个表的查询,但是有没有办法在表映射中对其进行建模?

【问题讨论】:

    标签: database entity-framework database-design data-modeling


    【解决方案1】:

    另一种思考方式是将书籍、电影、杂志视为 REVIEWABLE_ITEMS 的子类型。它们可能具有一些共同特征——如果不了解您的问题域的更多信息,就很难确定。这种方法的优点是您可以将 REVIEWS 建模为 REVIEWABLE_ITEMS 的依赖项,从而为您提供一个评论表一个可执行的关系。

    编辑

    是的,这就像在 OO 范例中扩展类型一样。您没有说您打算使用哪种类型的数据库,但this article by Joe Celko 显示了如何在 SQL Server 中执行此操作。完全相同的实现可以在 Oracle 中使用,我希望它也可以在大多数其他 RDBMS 产品中使用。

    【讨论】:

    • 所以这类似于为 reviewable_items 创建一个基类并为书籍和电影扩展它?
    【解决方案2】:

    这实际上取决于您希望如何访问/查看评论。

    我会为每种评论实现一个表:一个用于书籍,一个用于电影等。每个表都有一对多的关系(书籍和书评、电影和电影评论等) .如果您需要一个表中的所有评论,请创建一个视图,使用 UNION ALL 选择所有评论。

    【讨论】:

      【解决方案3】:

      您可以包含“可评论”的概念,它可以是一本书或杂志或 ... ,并且“评论”可以引用,或者您可以有一个“评论”的概念,它可以是可以参考一本书的“书评”,或者可以参考杂志的“杂志评论”,或者可以参考报纸的“报纸评论”,......

      因为不存在真正的关系系统,所以您必须在数据库设计中明确这两种抽象之一。 (除非你愿意实现很多触发代码。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-25
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多