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 |