我正在创建一个网站,其中所有网页都悬挂在数据库驱动的树层次结构中。
除一个节点外的所有节点都有父节点。节点可能具有基于角色的读取权限。某些节点可能有特殊规则(例如:不在导航菜单中显示)。
节点可能表示指向其他节点的链接(如Windows中的快捷方式)。节点通常代表页面。
页面显示HTML内容或execute programming。有些页面可能是子树的根(备用主页和样式表)。
请帮我在Microsoft SQL Server中设置我的节点数据库,供Linq to SQL使用。
我有三个想法:
许多轻量级表几乎都有 零nullalbe字段。
重量级节点表有很多 nullalbe fields。
最佳(或最差)两者:很多 nullalbe许多外国钥匙 轻量级表。
您觉得哪个最能代表数据?哪个最容易使用Linq to SQL?
如何在数据库中保留数据完整性规则?我如何在编程中最好地执行它们?
节点必须是(但不是两者) 链接或页面。
页面必须是(但不是两者)html或代码。
链接可能不是root,html或代码。
我可以使用这样的结构创建ASP.NET站点地图提供程序吗?我应该吗?
更新:我问了一个更普遍的问题:
What’s the best way to handle one-to-one relationships in SQL?
答案 0 :(得分:3)
在阅读您的帖子后,我的初步印象是,我非常反对让任何一种技术(在这种情况下为linq)严重影响数据库架构设计,达到您似乎建议的程度。
我认为您的架构应该几乎相同,无论您选择何种技术来构建业务/表示层。
我希望我没有误解你。
答案 1 :(得分:2)
我同意Linq的设计是低音的。 Joe Celko的书"Trees and Hierarchies in SQL For Smarties"对于模式来说有很多很好的想法来表示你想要做的事情。 Linq应该能够处理这些问题。
答案 2 :(得分:0)