我的博客数据模型有以下设置:
博客文章类别 ----- -------- 1 ---------- ID \ 1 * ID /----- ID 名称 \------------ 博客 ID / 名称 业主姓名 * / 类别 ID-/
我担心这个数据模型如何与博客的“最佳实践”相匹配。如果博客被删除,是否应该删除该博客的所有文章?如果一个类别被删除,文章应该怎么办?
有没有更好的办法?有什么我想念的吗?“最佳实践”建议做什么?
这实际上取决于您的用例。许多博客应用程序使用具有多对多关系的标签而不是具有一对多关系的类别,因为将文章视为与(可能)许多标签相关比将文章视为“包含在一个类别中。
如果你博客的逻辑是一篇文章严格包含在一个类别中,那么一对多的关系是合理的。在某些情况下,级联删除也是合理的。毕竟,孤立的文章甚至会存在于哪里。
这只是您必须预测用户群直觉的情况。他们会认为是自然的。
顺便说一句,这是更多的工作,但如果是我,我不会做级联删除。我会将文章标记为孤立的并将它们隐藏在大多数视图中。我还将提供一些用于恢复孤立文章的界面。而且我会考虑提供一个脚本来删除任何被孤立超过一段时间的东西。这样,如果您对用户期望发生的事情有误,您可以解决问题。
这篇(较早的)帖子介绍了一些与标签相关的数据库架构变体,包括详细讨论。也许这是一个很好的起点。
依靠。如果您的博客引擎不允许没有指定类别的条目,您可能应该通知用户后果并删除文章。否则,您可以使用 anON DELETE SET NULL
代替。
如果您的关系设置正确,您应该无法在不先删除所有相关数据的情况下删除该类别。删除一个类别会删除一堆文章似乎很奇怪,但同时,如果一个类别不再有效,那么文章也不应该是。
也许可以选择将所有文章重新映射到新类别。
几个问题。一篇文章可以有多个类别吗?您是否允许文章有 0 个与之关联的类别?不过,根据您的描述,我想说您不想删除这些文章。根据我在开发博客时的经验,这些类别通常与文章/帖子(描述多个帖子的多个类别)是多对多的关系。所以我不会删除它们,但这再次取决于您的业务逻辑以及您希望如何处理它。
好吧,将博客类别与博客文章相关联的外键(应该存在)不允许您这样做。如果您想保持您的文章和参考完整性,您应该考虑将您的文章的类别更改为不同的类别。
忘记数据模型,使用对象模型,即数据是实现,对象是接口,更接近需求。