谢谢两位,我还是不明白~
我想如果用户的基本信息建一个表,字段名包括:ID,name,sex,email,qq等字段
那么:
0、用户登录时是与用户基本信息表的数据进行核对,如果相同才有发表主题及留言等权限。
1、以用户发表的主题建一个表,包括发表时间,发表标题(用来搜索),发表内容,发表作者ID(与用户ID对应)
每发一个留言,就插入一条新的记录,这样只要搜索发表作者ID,就可以找到该ID发表的所有文章。但此表的关键字段(即唯一的不能有重复值的字段)该如何设置合理?好象用上面的不管哪个字段都有可能发生重复的字段值。或者干脆不设置关键字段而允许重复?能不能以自动编号的方式建一个关键字段用来区别每一个主题(也就是每一条记录)?
2、用户的回复如何组织起来以跟主题表和用户基本情况表对应起来?如果建一个新的数据库,每发表一个回复就插入一条新的记录,那么是不是要设置一个字段用来表明所回复的是哪一个主题?如果以上一条中的方式以自动编号的方式为每一个发表主题建立了唯一的区别字段值,在此表中再设置一个这样的编号字段,凡是有此编号的即为上一条所述主题表中的唯一主题的回复,再在回复表中建一个回复时间字段,并让其作为排列留言的先后依据,是这样吗?
这样看来,就要建三个表:
A表用来记录用户基本信息。ID是关键字段,每个记录的ID不能有重复。
B表用来记录主题的信息,每一个主题就是一条记录,并且每个记录有一个唯一的编号(从1开始的自然连续整数)。
此主题必有一个ID字段以跟A表中的ID对应(相等)。
C表用来记录回复。每一条回复就是一个记录,每个记录有一个编号字段,以对应B表中的编号,此表无关键字段(这样不同记录的值可以
相同)。
页面显示描述:
某用户发表了一个标题为“编程论坛我爱你”的主题记录在B表中并显示在论坛主题列表中。
当点击该主题时,从B表中以编号(唯一的)找到该主题显示在页面上。
然后从C表中以 select * from C where 编号="8888" 的方式找到所有该主题的回复,并以发表的时间先后顺序显示在页面上。
查找某ID发表的所有主题:
select * from B where id="ILoveYou"
研究了N天,勉强思索到这样一个逻辑关系来描述论坛的文章在数据库中的存储方式,但感觉不行,而此方面的资料我这个网虫目前尚未看到任何教程和讨论。包括书本上的和互联网上的。
上面的朋友说可以用一个表,我感觉不行,除非在long text 类型的文本内容的字段中设置一个特别的分隔符来区分不同的留言和不同的主题,但这样可操作性我想都没想,感觉太麻烦了。而且long text也是有容量限制的。
希望各位把你们工作和学习过程中的这种好方法讲一下,最好描述一下表的关系及设置某些关键字段的理由