代码之家  ›  专栏  ›  技术社区  ›  DevMania

建立博客数据模型的最佳实践

  •  1
  • DevMania  · 技术社区  · 17 年前

    我的博客数据模型有以下设置:

    Blog               Articles             Categories
    -----              --------          1  ----------
    ID  \ 1         *  ID            /----- ID
    Name \------------ BlogID       /       Name 
    Owner              Name      * /      
                       CategoryID-/
    

    有更好的办法吗?有什么我遗漏的吗?“最佳实践”建议做什么?

    7 回复  |  直到 17 年前
        1
  •  3
  •   David Berger    17 年前

    这实际上取决于您的用例。许多博客应用程序使用具有多对多关系的标记,而不是具有一对多关系的类别SIP,因为将文章视为与(可能)多个标记相关比将文章视为“包含”在类别中更有意义。

    如果你博客的逻辑是一篇文章严格地包含在一个类别中,那么一对多的关系是合理的。在某些情况下,级联删除也是合理的。毕竟,那些孤立的文章会在哪里存在呢。

    他们 假设是自然的。

    顺便说一句,这需要做很多工作,但如果是我,我不会进行级联删除。我会将文章标记为孤立的,并在大多数视图中隐藏它们。我还将提供一些用于恢复孤立文章的接口。我会考虑提供一个脚本,删除任何被孤立了超过一段时间的东西。这样,如果你对用户的预期是错误的,你可以解决这个问题。

        2
  •  2
  •   Michael Wallasch    17 年前

    (older) post 介绍一些与标记相关的db模式变体,包括详细讨论。也许这是一个很好的起点。

        3
  •  1
  •   Mehrdad Afshari    17 年前

    ON DELETE SET NULL 相反

        4
  •  1
  •   Joshua Belden    17 年前

    如果您的关系设置正确,则在不首先删除所有相关数据的情况下,您将无法删除该类别。删除一个类别会删除一堆文章,这似乎很奇怪,但同时,如果一个类别不再有效,那么这些文章也不应该有效。

        5
  •  1
  •   JaCraig    17 年前

    有几个问题。一篇文章可以有多个类别吗?您是否允许文章与0个类别关联?根据你的描述,我想说你不想删除这些文章。根据我在开发博客时的经验,类别通常是与文章/帖子的多对多关系(多个类别描述多个帖子)。所以我不会删除它们,但这将再次取决于您的业务逻辑和您希望如何处理它。

        6
  •  0
  •   Daniel Sam    17 年前

    那么,您的外键(哪个 存在)将您的博客类别与您的博客文章关联将不允许您这样做。如果你想保持文章和参考完整性,你应该考虑将文章的类别改为另一种。

        7
  •  0
  •   Fred Yang    17 年前

    忘记数据模型,使用对象模型,即数据是实现,对象是接口,更接近需求。