哪种导航最适合我的数据库架构?

时间:2020-03-05 18:51:37  来源:igfitidea点击:

我正在创建一个网站,其中所有页面都挂在数据库驱动的树层次结构上。

除一个节点外,所有节点都有一个父节点。节点可能具有基于角色的读取权限。某些节点可能具有特殊规则(例如:不在导航菜单中显示)。

节点可能表示到其他节点的链接(例如Windows中的快捷方式)。节点通常代表页面。

页面显示HTML内容或者执行编程。某些页面可能是子树的根(备用母版页和样式表)。

请帮助我在Microsoft SQL Server中设置节点数据库,以供Linq to SQL使用。

我有三个想法:

  • 许多轻量级表格的nullalbe字段几乎为零。 #1许多具有几乎为零的nullalbe字段的轻量表http://img126.imageshack.us/img126/2016/scan1ro8.gif
  • 具有许多nullalbe字段的重量级节点表。 #2重量级节点表,其中包含许多nullalbe字段http://img124.imageshack.us/img124/9909/scan2xm2.gif
  • 两者最好(或者最坏):许多轻量表都使用nullalbe外键。 #3许多轻量表的大量nullal外键http://img124.imageshack.us/img124/1999/scan3wn8.gif

我们觉得哪个最能代表数据? Linq to SQL最容易使用哪个?

如何将数据完整性规则保留在数据库中?如何在编程中最好地实施它们?

  • 节点必须是链接(或者不是链接)或者页面(但不能都是链接)。
  • 页面必须是(但不能同时是)html或者代码。
  • 链接可能不是根,html或者代码。

我可以使用这种结构来制作ASP.NET站点地图提供程序吗?我是不是该?

更新:我问了一个更笼统的问题:

在SQL中处理一对一关系的最佳方法是什么?

相关问题:
如何在数据库中实施数据完整性规则?

解决方案

回答

阅读文章后,我的初步印象是,我不愿意让任何一种技术(在本例中为linq)在我们似乎建议的范围内对数据库架构设计产生重大影响。

我认为架构应该几乎相同,而不管我们选择了哪种技术来构建业务/表示层。

我希望我没有误会你。

回答

我同意在考虑Linq的情况下进行低音设计。 Joe Celko的书"用于Smarties的SQL中的树和层次结构"有许多关于架构的好主意,可以表示我们要执行的操作。 Linq应该能够处理这些问题。

回答

查看这篇文章。它讨论了在数据库中存储树结构的问题,并提供了一些不错的示例代码来入门。

本文与LINQ无关,只是为我们提供了一种在数据库中存储树结构的好方法。

希望这可以帮助。