.net - 哪种数据库模式最适合我的导航?

标签 .net sql database linq-to-sql database-design

<分区>

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

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

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

页面呈现 HTML 内容或 execute programming .一些页面可能是子树的根(备用母版页和样式表)。

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

我有三个想法:

  1. 许多轻量级的表几乎 零 nullalbe 字段。

    #1 Many lightweight tables with almost zero nullalbe fields

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

    #2 Heavyweight Node table with lots of nullalbe fields

  3. 两者中最好的(或最差的):很多 nullalbe 外键对许多 轻量级表格。

    #3 Lots of nullalbe foreign keys to many lightweight tables

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

如何在数据库中保留我的数据完整性规则?我如何在我的编程中最好地执行它们?

  • 节点必须是(但不是两者) 链接或页面。

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

  • 链接不能是根、html 或代码。

我可以制作具有这种结构的 ASP.NET 站点地图提供程序吗?我应该吗?


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

What’s the best way to handle one-to-one relationships in SQL?


相关问题:
How do I enforce data integrity rules in my database?

最佳答案

阅读您的帖子后,我的初步印象是,我非常反对让任何 技术(在本例中为 linq)严重影响数据库架构设计,达到您似乎建议的程度。

我认为无论您随后选择何种技术来构建业务/表示层,您的架构应该几乎相同。

希望我没有误会你。

关于.net - 哪种数据库模式最适合我的导航?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56981/

相关文章:

c# - 无法编辑我的 C# DataGridView 中的任何列 - 有人知道为什么吗?

c# - 使用 C# WinForms 的透明图像

mysql - 将 SQL LIKE 运算符与 UPPER() 语法结合使用

.net - "The test form is only available for requests from the local machine."

mysql - 不止一个 WHERE 条件导致错误 : You have an error in your SQL syntax;

mysql - 使用group_concat后如何计算以 ','分隔的列的长度

asp.net - 存储过程查询中的 SQL 注入(inject)

node.js - 在 REST 应用程序中处理数据库错误时,什么被视为标准?

sql-server - SQL Server 标识规范不是顺序的

.net - 任何具有测试功能的 BNF IDE