sql-server – 在数据库中的引用表中有一条代表“所有其他记录”
我有一个带有SQL Server后端的asp.net-mvc网站.我正在简化我的情况,以突出和隔离问题.我在DB中有3个表
>文章表(id,名称,内容) 在我的网站上,当您创建文章时,您可以从多选列表框中选择您希望该文章发送的位置. 大约有25个地点,所以我在辩论添加一个名为“全球”的新位置作为快捷方式,而不是让人从列表框中选择25个不同的项目.我仍然可以将其作为前端的快捷方式,但现在我正在辩论是否有利于此流程到后端. 因此,如果我有一篇全球性的文章,而不是在ArticleLocation表中有25条记录,我只会有一条,然后我会在前端做一些技巧来选择所有项目.我想弄清楚这是一个非常糟糕的主意. 我能想到的事情让我感到紧张: >如果我创建一篇文章并选择全局但后来最后添加3个新位置会怎样.如果没有这种全局设置,这3个位置将无法获得文章,但是以新的方式,他们会.我不确定什么是更好的,因为第二件事实际上可能是你想要的,但它有点不那么明确. 有没有人对这个困境提出任何建议,围绕在真正反映“所有记录”的参考数据表中创建记录.感谢任何建议 解决方法根据要求,这是我的评论提升为答案.这也是一个扩展它的机会.我将我的答案限制在一个只有一个位置列表的系统中.我做过公司层级的事情:公司,部门,地区,州,县,办事处和员工或其他一些人.它变得丑陋. 在OP的问题的情况下,似乎向Article表添加AllLocations位使得意图清楚.标志设置为1的任何文章都会出现??在所有位置,无论它们何时创建,并且不需要在ArticleLocation表中包含任何条目.如果作者不希望文章自动显示在将来的位置,则仍可以将文章明确添加到所有现有位置. 实施涉及更多的工作.我会向Article和ArticleLocation表添加INSERT和UPDATE触发器,以强制执行A??llLocations位设置且ArticleLocation中没有相应行的规则,或者该位是明确的,并且可以显式设置位置. (这是个人偏好让数据库在可行的情况下防御“坏数据”.) 根据您的需要,表值函数是隐藏一些脏工作的好方法,例如: dbo.GetArticleIdsForLocation(LocationId)可以在内部处理AllLocations标志.您可以在存储过程和ad-hoc查询中使用它来加入Article.在其他情况下,视图可能是适当的. 欢迎您借用的另一个功能(“从朋友那里窃取!”)是让管理员的登录页面成为“例外”页面.在这里,我展示的东西从大规模的火焰灾难到简单的peccadillos.在这种情况下,与零位置相关联的文章将被视为非关键的内容,但值得检查. 在每个位置明确显示的文章可能会对添加新位置的人感兴趣,因此我可能会有一个网页.可能应更新某些文章以明确说明新位置,或重新考虑更改为所有位置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET下向SQLServer2008导入文件实例操作方法
- sql-server – 我需要收缩我的数据库 – 我只是释放了很多空
- BusinessOBject analysis + sqlserver analysis service 开
- 如何为下面给出的查询编写等效的SQL case语句?
- Sqlserver中 登录用户只能看到自己拥有权限的库
- SQL中的left join right join
- 按年月统计并行列转换(ms sqlserver2005)
- sql-server – 查询编辑器菜单中的不同颜色条在SSMS中意味着
- sql-server – 可以将MS SQL 2005备份还原到MS SQL 2008的实
- 自动定时备份sqlserver数据库的方法