为单独用户还是全部用户做栏目表  看需求嘛无限菜单的话  用xml存储 或 存到数据库里都一样的    个人喜欢数据库(xml要是太大了不太好处理)

解决方案 »

  1.   

    1个栏目表足够了,也好维护和操作,数据量大能有多大?每个用户1个表不可能,如果有1W个用户就1W个表,不可能。如果每个用户1个XML配置文件的话,那数据库中的其他数据如何跟用户自定义的栏目进行关联?
      

  2.   

    如果采用一张表的话做无线级联关系结构如下类名,父类id,本类id   //字段
    ...........
    ...........
    这样的话如果有40W数据,反复遍历不是非常的慢么!!
    在数据库设计上有没有什么可行的办法?
      

  3.   

    为什么要反复遍历?PS:对于1个数据表而言,40W数据不算大。数据库设计应该如下:本类id,父类id,类名,用户ID但用户登入后,首先根据"用户ID"字段把该用户的所有栏目读取到内存缓存起来,然后在内存进行操作,这样其实只需要读1次数据库就好。如果你觉的读取一次数据库都算多的话,你可以采用1个数据表和每个用户1个XML配置文件结合的方式来处理。
    但用户添加、删除、修改栏目的时候,重新生成用户的XML配置文件,并更新数据库。
    当用户登入的时候直接读取XML文件就行,不需要读取数据库。这种方式采用的也比较多,因为用户的栏目一般
    在第一次定义好后就很少修改了,所以这种方式比较好。
      

  4.   

    分开写,菜单不等于栏目。实际上多数cms系统的菜单是和频道挂钩的栏目通常是和新闻类别挂钩而菜单可以是和一个静态页或者栏目组或者干脆就是链到外站,又或者他只是一个锚点但要处理js事件。为了不让菜单和新闻栏目搅混最好分开写从数据结构和对象实现上看菜单和新闻栏目是一样的,他们可以继承同一个基类但是实现最好各自单独实现至于用户权限和菜单匹配的问题?从对象角度说用户权限和菜单本来就是两个对象,他们原本就不应该放在一块处理,实际上有关用户权限和菜单匹配我个人认为直接对象序列化就可以了,而不需要做太多处理
      

  5.   

    参考:存储在二维表的树结构如何进行指定深度节点的查询
    http://www.cnblogs.com/cathsfz/archive/2006/12/12/589464.html
      

  6.   

    BearRui
    但用户登入后,首先根据"用户ID"字段把该用户的所有栏目读取到内存缓存起来, 
    =============================================
    文一下如何存放,使用临时表?或用session 存放dataset?这点我也想过 少的用户可以,但访问量大了  服务器也受不了!——!
    请问有没有什么更号的办法解决大数据量查询的问题
      

  7.   

    如何缓存,请在网上搜索下ASP.NET中如何使用缓存。