关于.net:哪种导航最适合我的导航架构?

Which is the best database schema for my navigation?

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

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

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

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

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

我有三个想法:

  • 许多轻巧的桌子几乎
    零个nullalbe字段。

    #1 Many lightweight tables with almost zero nullalbe fields

  • 重量级节点表有很多
    nullalbe字段。

    #2 Heavyweight Node table with lots of nullalbe fields

  • 两者最佳(或最差):很多
    nullalbe许多的外键
    轻巧的桌子。

    #3 Lots of nullalbe foreign keys to many lightweight tables

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

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

    • 节点必须是其中一个(但不能同时是两个)
      链接或页面。

    • 页面必须是(但不能同时是)html或代码。

    • 链接可能不是root,html或代码。

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

    更新:我问了一个更一般的问题:

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

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


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

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

    我希望我没有误会你。


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


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

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

    希望这可以帮助。


    推荐阅读

      linux命令大全数据库?

      linux命令大全数据库?,服务,系统,平台,状态,软件,通用,环境,数据,神州,地址,

      linux上数据库的命令?

      linux上数据库的命令?,服务,系统,信息,地址,命令,密码,工具,管理,数据,单位,

      linux命令dm数据库?

      linux命令dm数据库?,地址,软件,时间,设备,名字,服务,位置,名称,公司,命令,lin

      linux网站根目录命令?

      linux网站根目录命令?,系统,一致,设备,网站,目录,根目录,信息,标准,位置,电

      linux数据库查找命令?

      linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,

      linux数据库同步命令?

      linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,D

      linux访问网站的命令?

      linux访问网站的命令?,地址,系统,服务,工作,网站,命令,网络,管理,信息,网址,L

      linux建立数据库命令?

      linux建立数据库命令?,软件,系统,工作,数据,密码,工具,数据库,一致,网络,服

      linux命令进数据库?

      linux命令进数据库?,地址,系统,名字,服务,密码,命令,读法,数据库,操作系统,

      linux数据库检查命令?

      linux数据库检查命令?,服务,状态,地址,位置,系统,信息,命令,工作,情况,密码,

      linux命令进去数据库?

      linux命令进去数据库?,地址,服务,名字,系统,数据库,工具,基础,工作,管理,网

      linux数据库基础命令?

      linux数据库基础命令?,地址,工作,基础,系统,命令,信息,情况,工具,设备,目录,l

      linux命令行登陆网站?

      linux命令行登陆网站?,网站,系统,密码,服务,地址,环境,网络,软件,状态,项目,

      linux登陆网站命令?

      linux登陆网站命令?,网络,工具,网站,标准,地址,软件,系统,命令,数据,环境,lin

      linux命令打开网站?

      linux命令打开网站?,网络,网站,系统,地址,密码,传播,工具,代码,环境,命令,大

      数据库导出命令linux?

      数据库导出命令linux?,数据,系统,名称,密码,软件,服务,情况,网上,工具,文件,L

      linux数据库删除命令?

      linux数据库删除命令?,软件,服务,产品,名称,系统,不了,地址,管理,电脑,命令,L

      linux数据库操作命令?

      linux数据库操作命令?,信息,系统,网络,地址,分析师,数据,名称,管理,基础,命

      linux连数据库命令?

      linux连数据库命令?,服务,地址,密码,名字,系统,软件,一致,命令,数据库,读法,

      linux命令行登录网站?

      linux命令行登录网站?,系统,网站,地址,工作,软件,密码,网络,第一,环境,中心,