JAVAEYE简易数据库设计
前言
在对JAVAEYE数据库设计的过程中渐渐明白了些方法,大略掌握了些步骤(纯属个人观点,仅供参考):
分析整个系统找出相对独立的基本结构制成表,在这个系统中我主要找出了以下几种基本表:useinfo(用户表)、bloginfo(博客表)、message(留言)、photos(相册)、posts(帖子)等。
列出每个表中应该有的属性,例如用户表的属性应有:name(名字)、state(目前该用户的状态,包括在线和离线等)等。
根据现有的表找出表与表之间的关系,这些关系有一对一,一对多,多对多(注意:如果是多对多关系则需要再生成一全表来联系这两张表),根据关系确定联系则大功告成了。
正文
Table1:userinfo(用户表:储存用户基本信息)
属性名 | 类型 | 长度 | 说明 |
User_id | int |
| 主键 |
User_name | char | 20 |
|
User_age | Int |
|
|
User_sex | char | 4 |
|
User_state | int |
| 用户状态:0在线、1离线、2看博客 |
Table2:blogClass(博客分类表:储存博客的种类,主要有:java编程、javaeye等几种)
属性名 | 类型 | 长度 | 说明 |
Class_id | Int |
| 主键 |
Class_name | char | 20 |
|
Table3:bloginfo(博客表:储存博客信息)
属性名 | 类型 | 长度 | 说明 |
Blog_id | int |
| 主键 |
Blog_tittle | char | 50 | 博客标题 |
Blog_content | char | 255 | 博客内容 |
Id_user | int |
| 外键:依据用户表中的user_id |
Id_class | int |
| 外键:依据博客分类表中的class_id |
注:用户表,博客表(一对多);博客分类表,博客表(一对多)
Table4:comments(评论表:储存用户对某篇博客的评论)
属性名 | 类型 | 长度 | 说明 |
Comment_id | int |
| 主键 |
Comment_content | char | 100 |
|
Comment_user | char | 20 | 发表评论的用户的名字 |
Id_blog | int |
| 外键:依据博客表中blog_id |
注:博客表,评论表(一对多);特别注意:在这里为了简单,我把用户表和评论表设计成没有外在联系,即不能根据用户ID察看某个用户发表的评论,所以comment_user不是外键,与用户表没有实际联系。
Table5:attention(关注表:储存用户关注谁和被谁关注)
属性名 | 类型 | 长度 | 说明 |
Attention_id | Int |
| 主键 |
Id_me | int |
| 外键:依据用户表中的user_id |
Id_friend | int |
| 外键:依据用户表中的user_id |
注:关注表是由用户表和用户表自身之间的关系产生的,即自身的多对多关系,因为该表中两个外键都是依赖用户表,我们可以根据这两个外键确定某用户关注的人和被谁关注了。特别注意:这个表有个缺点那就是如果关注或被关注的人太多了就不适用了,如果某用户关注了一万个用户那就需要一万行,效率极低。
Table6:message(留言表:储存用户收到的留言)
属性名 | 类型 | 长度 | 说明 |
Message_id | int |
| 主键 |
Message_content | char | 255 |
|
Message_leaver | char | 20 | 留言者的名字 |
注:该表与评论表差不多。用户表,留言表(一对多)。
Table7download(下载表:储存用户下载博客的相关信息)
属性名 | 类型 | 长度 | 说明 |
Download_id | Int |
| 主键 |
Download_count | int |
| 该博客被下载的次数 |
Id_user | int |
| 外键:依据用户表中的user_id |
Id_blog | Int |
| 外键:依据博客表中的blog_id |
注:该表有两个不同的外键。意思即为:一个用户可以下载多篇博客;一篇博客可以被多个用户下载。
Table8:circle(圈子表:储存圈子信息)
属性名 | 类型 | 长度 | 说明 |
Circle_id | int |
| 主键 |
Circle_name | char | 45 | 圈子的名字 |
注:圈子相当于QQ中的群。
Table9:Circle_user(圈子—用户表:用于查找某用户所属的圈子或某圈子里的用户)
属性名 | 类型 | 长度 | 说明 |
Circle_user_id | int |
| 主键 |
Id_user | int |
| 外键:依据用户表中的user_id |
Id_circle | Int |
| 外键:依据圈子表中的circle_id |
注:该表是典型的联结多对多的两个表的表,有了该表就可以根据用户ID查找出他所属的圈子有哪些,也可以根据圈子ID查找出该圈子里有哪些用户。
Table10:forum(论坛表:储存论坛相关信息)
属性名 | 类型 | 长度 | 说明 |
Forum_id | int |
| 主键 |
Forum_name | char |
Table11: posts(帖子表:储存用于客户发表的帖子)
属性名 | 类型 | 长度 | 说明 |
Post_id | Int |
| 主键 |
Post_content | char | <span style="font-family: Times New Roman; font-s |