1,我想要的是无论按照哪种方式发布,按照主题或者按照日期 
     在检索时也无论按照哪种方式发布,按照主题或者按照日期,都能把这篇文章检索出来 ---
给文章两个分类字段关联分类表
查询时根据选择构造不同的SQL语句或过滤语句3,如果按主题搜索 胎儿发育,能同时检索出孕早中晚 3期的 数据 
BOM问题,查相关例子

解决方案 »

  1.   

    如果理解没错的话,应该你只要把类别设计成分级的就可以了,工厂的BOM结构就差不多。比如:
    类别表(ClassID,ParentClassID,ClassName,ClassDesc,...)
    这个就是普通的类别设计,唯一多了一个父亲类别(ParentClassID),就是为了实现那种一个类别属于其他大类别的关系。文章表(ArticleID,ArticleTitle,ArticleContent,...)
    这个表没有任何特殊性,就是普通的文章表文章类别表(ClassID,ArticleID)
    这个表不能跟文章表合并,为什么呢?为了满足你那种文章按不同标准属于不同类别的需求,如果保存在文章表,文章就只能属于一个类别,跟你的需求相背。个人建议,仅作设计参考
      

  2.   

    文章类别表(ClassID,ArticleID) 
    可以让你关联任意文章和任意类别。如果你一个类别可能有两个父亲类别,那么可能要拆分类别表为:
    类别表(ClassID,ClassName,ClassDesc,...) 
    类别关联表(ClassID,ParentClassID)这样应该就能满足多对多的类别关系
      

  3.   

    3楼的可以呀:
    大类表 T_CLASS:ID     NAME        PID
                  1      按时间         0
                  2      准备期         1 
                  3      怀孕期         1
                  4      孕早期         3
                  5      孕中期         3
                  6      孕晚期         3
                  7      按主题         0
                  3      孕前产后       7
                  ....
    分类表 T_TYPE:  ID    NAME
                    1   怀孕与优生 
                      2   不孕不育 
                      3   胎儿发育 
                      4   孕期饮食 
                      5   孕妇保健 
                      ...
    分类大类表 T_CLASSTYPE: CID TID
                            2   1
                            2   2
                            4   3
                            4   4
                            4   5
                            ...
    文章表    T_Article: ID TID(分类ID) ...
      

  4.   

    添加索引是我在考虑的。在我遇到的问题中,索引就比较麻烦。我无从下手。主要是由于自己没有这方面的经验。
    如果我按照时间建立索引,类似  001 000 000  这样的模式,那可以,没有问题,那么当有多种检索方法时能?
    我不知道我的方法是否很菜  或者很不专业,比如 按照时间  为 A-001 001 000  按照主题为 B-001 001 000
    在此只有2个分类时  添加这2个层次字段可以满足要求。但是将来我如果在最顶级增加了 按照 性别搜索,是不是就得 又添加一个  C-001 001 000  这显然不怎么科学 。
    或许我的说法很没基础知识,还是希望大哥们多发表见解帮忙。
      

  5.   

    首先感谢 zbc1009一直关注,
    这个帖子由于发布时不小心刷新又发了一帖,所以总分有200分,小弟不会亏待你的。
    自己水平太低,得抓紧努力。
      

  6.   

    需要建立一个表
    类别表(objid,parentid,objname,objjc)   
    这样应该就能满足这个关系 如下表:
    USE [test]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[type](
    [Objid] [int] IDENTITY(1,1) NOT NULL,
    [Parentid] [int] NOT NULL DEFAULT (0),
    [Objname] [varchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL,
    [Objjc] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [Objorder] [int] NULL CONSTRAINT [DF_type_Objorder]  DEFAULT (0),
    [Objpy] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [Objexplain] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
    [Memo] [text] COLLATE Chinese_PRC_CI_AS NULL,
     CONSTRAINT [PK_type] PRIMARY KEY CLUSTERED 
    (
    [Objname] ASC
    ) ON [PRIMARY],
     CONSTRAINT [IX_type_ID] UNIQUE NONCLUSTERED 
    (
    [Objid] ASC
    ) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]GO
    SET ANSI_PADDING OFF
    GO
    USE [test]
    GO
    ALTER TABLE [dbo].[type]  WITH CHECK ADD  CONSTRAINT [FK_type_type] FOREIGN KEY([Parentid])
    REFERENCES [dbo].[type] ([Objid])
      

  7.   

    所有数据均保存一个表中,通过OBJID,PARENTID来建立他们的关系,不知这样能否解决楼主的问题