设置博客数据模型的最佳实践

时间:2009-05-06 20:29:58

标签: c# asp.net sql blogs

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

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

我很担心这个数据模型如何与博客的“最佳实践”相匹配。如果删除博客,是否应删除该博客的所有文章?如果删除了类别,那么文章会发生什么?

有更好的方法吗?有什么我想念的吗? “最佳实践”建议做什么?

7 个答案:

答案 0 :(得分:3)

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

如果您博客的逻辑是文章严格包含在某个类别中,则一对多关系是合理的。在某些情况下,级联删除也是合理的。毕竟,甚至存在孤儿文章。

这只是您必须预测用户群直觉的情况。 他们所假设的是自然的。

顺便说一句,这项工作要多得多,但如果是我,我就不会进行级联删除。我会将文章标记为孤立,并将其隐藏在大多数视图中。我还将提供一些用于恢复孤立文章的界面。我会考虑提供一个脚本来删除任何孤儿超过一段时间的事情。这样,如果您对用户期望发生的事情错了,您就可以解决问题。

答案 1 :(得分:2)

(older) post引入了一些与标记相关的数据库模式变体,包括详细讨论。也许这是一个很好的起点。

答案 2 :(得分:1)

取决于。如果您的博客引擎不允许没有指定类别的条目,您应该通知用户结果并删除文章。否则,您可以使用ON DELETE SET NULL代替。

答案 3 :(得分:1)

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

也许是将所有文章重新映射到新类别的选项。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

那么,您的外键(应该存在)将您的博客类别与您的博客文章相关联是不允许的。如果您想保留文章和参照完整性,则应考虑将文章的类别更改为其他类别。

答案 6 :(得分:0)

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