网站数据库设计(CMS)考虑和建议数据库驱动菜单

Lea*_*ing 7 sql-server asp.net database-design content-management-system data-structures

这个问题是参考我之前的问题.根据我的要求,我对我的数据库做了一些修改,但我还不确定如何创建子菜单(需要从另一个表而不是主pg_Pages表创建).

我将页面信息保存在pg_Pages可以创建菜单的位置.我的问题是我可以轻松地为"关于我们"和"多媒体"创建子菜单,因为我将这些页面存储在pg_Pages表格中,但我需要NewsNews Category表格创建子菜单并将它们链接到正确的页面处理程序.与从事件magazine表.

菜单示例 在此输入图像描述

样本数据

pg_Pages Table
PageID  PageName    LangID  PagePositionNo  PageURL     PageInheritance
1   Home        1   10      Default.aspx    0
2   About Us    1   20      Page.aspx   0
3   PageOne     1   10      Page.aspx   2
4   PageTwo     1   20      Page.aspx   2
5   Multimedia  1   30      Page.aspx   0
6   Video       1   10      Videos.aspx 5
7   PhotoGallery    1   20      Gallery.aspx    5
8   News        1   40      News.aspx   0
9   Issues      1   50      #       0
10  Publication 1   60      Page.aspx   0
11  SpanishHome 2   10      Default.aspx    0
12  SpanisAbout Us  2   20      Page.aspx   0
------------------------------------------------------------------------------
Magazine
MagazineID  MagazineIssueCode   LangID  MagazineTitle   MagazineLiveIssue(CurrentIssue)
1       101         1   Mag Title       0
2       102         1   Mag Title       1
3       101         2   SpanisgMag Title    0
4       102         2   Mag Title       1
------------------------------------------------------------------------------

art_Article Table
ArticleID   ArticleTitle    ArticleCatID    MagazineID  Language   TYPE 
1       Article one 100     1       1   Artile
2       Article two 100     1       1   Artile
3       Article three   200     1       1   Artile
4       Article four    300     1       1   Artile
5       Article Five    100     2       1   Artile
6       EditorMessage   300     2       1   EditorMessage
7       Article seven   200     2       2   Somthing
------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

我希望我的设计足够灵活,可以从不同的表中读取菜单.我应该采取什么样的方法/改变来正确完成它而不是为所有菜单创建一个单独的表并将它们链接到页面?请为此方案建议最佳方法.

我希望系统非常灵活,直接从数据库中读取菜单信息,而不是创建静态链接并根据IssueID或其他ID发送查询.

News Menu基本上显示文章的类别,进一步我需要一个查询,它只显示News菜单下的类别,其中包含该特定问题的文章.假设如果问题102没有任何与文化相关的文章那么文化子菜单不应该出现在新闻下.

Ser*_*erg 3

您的任务是将站点实例映射到菜单实例。这可以通过 View 轻松完成。

因此,例如,使用viewMenu以下列创建:MenuItemId, MenuItemName, MenuItemLevel, MenuItemParent, MenuItemUrl。您可以操作这些属性以在代码中创建菜单。您还可以使用创建初始视图的 SQL 查询来操作当前数据库结构或任何未来结构中的数据。

现在,您可以将三个不同查询的结果合并到三个表中。将来您可以向菜单更改视图添加功能。以及在向数据库添加新表时向菜单添加新项目。