2008-09-11 65 views
3

我正在創建一個網站,其中所有頁面都掛起了一個數據庫驅動的樹型層次結構。哪個是我的導航最好的數據庫模式?

除一個節點之外的所有節點都有一個父節點。節點可能具有基於角色的讀取權限。某些節點可能有特殊規則(例如:不在導航菜單中顯示)。

節點可能代表到其他節點的鏈接(如Windows中的快捷方式)。節點通常代表頁面。

頁面顯示HTML內容或execute programming。一些頁面可能是子樹的根(備用主頁和樣式表)。

請幫我在Microsoft SQL Server中設置我的節點數據庫,供Linq to SQL使用。

我有三個想法:

  1. 許多幾乎爲零 領域nullalbe輕量級表。

    #1 Many lightweight tables with almost zero nullalbe fields http://img126.imageshack.us/img126/2016/scan1ro8.gif

  2. 重量級節點表,有很多 nullalbe領域。

    #2 Heavyweight Node table with lots of nullalbe fields http://img124.imageshack.us/img124/9909/scan2xm2.gif

  3. 最佳(或最差)兩者的:大量的 nullalbe外鍵許多 輕量級表。

    #3 Lots of nullalbe foreign keys to many lightweight tables http://img124.imageshack.us/img124/1999/scan3wn8.gif

哪個你覺得最能代表該數據? 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?

回答

2

我讀您的文章後,最初的印象是,我將非常不願意讓任何一種技術(在這種情況下是linq)會嚴重影響數據庫模式設計,這似乎是你所建議的。

我認爲您的模式應該幾乎相同,無論您選擇哪種技術來構建業務/表示層。

我希望我沒有誤解你。

0

結賬this article。它討論了在數據庫中存儲樹結構,並給出了一些很好的示例代碼來幫助你開始。

本文與LINQ無關,只是爲您提供了一種在數據庫中存儲樹結構的好方法。

希望這會有所幫助。

相關問題