您现在的位置: 365建站网 > 365文章 > 8.5 数据库设计

8.5 数据库设计

文章来源:365jz.com     点击数:393    更新时间:2009-09-12 17:11   参与评论

8.5 数据库设计

本案例的一个主线元素即图片,围绕图片,他的上级元素应该是一个分类元素,而这个分类不同于以往的分类,因为这个分类是以用户为单位的,也就是说,用户可以拥有其“相册”,这个相册即是图片的分类。因此分类也有一个上级元素,即用户。

另外,我们还在这里设计了标签(又称Tag),一个图片可以拥有多个标签,一个标签也可能对应了多个图片,这是一个多对多的关系。

在数据库中,多对多关系通常是这样处理的:多对多关系的两个元素,各用一个表存放,另外还有一个“关系表”,用来存放二者的对应关系。举例来说,本案例的标签部分可以这样设计,除图片表外,加入一个标签表,在这里存放标签的唯一编号,另外存放具体的标签名称,在这二者之外,再加入关系表Photo2Tag,这个关系表有三个字段,第一是关系的唯一编号作为主键,另外两个字段分别是图片的唯一编号和标签的唯一编号,当某个图片有某个标签时,就在此表中加入一条记录。这样做的好处是关系分明,符合数据库设计的范式,缺点在于程序编制麻烦,当你取出图片的标签时,需要同时打开关系表和标签表,在关系表中查询出图片对应的所有标签的编号,再在标签表中查出这些编号对应的标签名称。

在本案例中,不采用这种方法,而是采用一种折衷的办法,即,有标签表,但是没有关系表,我们在图片表中新增一个字段,放入所有的标签名称。这样做不符合数据库范式,但是可以在程序编写和查询效率方面获得一些提高。

文本框: 扩展阅读:什么是数据库设计的范式
设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)到第六范式(6NF)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

除此之外,我希望告诉你的是,由于在本章的用户模块中设计了一个用户找回密码的功能,即当用户忘记密码时,可以在系统中输入其注册时的Email,系统将发送一封信件给该用户,用户点击信件中的链接即可重设密码,在这个过程中涉及一个密钥认证的环节,因此我们为这里设计了一个表FindPass。

本章详细的数据库设计如下:

数据表Album的结构如表8.1所示:

表8.1

字段

类型

描述

可否为空

默认值

备注

AlbumID

自动编号

相册编号

主键

UserID

数字

所属用户编号

AlbumName

文本

相册名称

AlbumCover

文本

相册封面

数据表Photo的结构如表8.2所示:

表8.2

字段

类型

描述

可否为空

默认值

备注

PhotoID

自动编号

图片编号

主键

UserID

数字

所属用户编号

AlbumID

数字

所属相册编号

0

PhotoName

文本

图片名称

PhotoContent

备注

图片介绍

PhotoSourceUrl

文本

图片文件地址

PhotoTags

文本

图片Tag

PhotoSize

数字

图片文件大小

0

PhotoPermission

文本

图片浏览权限

PhotoClick

数字

图片点击量

0

PhotoVoteScore

数字

图片评分得分

3

PhotoVoteTotal

数字

图片评分人数

1

PhotoAddTime

日期/时间

图片添加时间

Now()

数据表ShareUser结构如表8.3所示:

表8.3

字段

类型

描述

可否为空

默认值

备注

UserID

自动编号

用户编号

主键

UserEmail

文本

用户Email

UserNickName

文本

用户昵称

UserPassword

文本

用户密码

UserAddTime

日期/时间

用户注册时间

Now()

UserHead

文本

用户头像

数据表Tag结构如表8.4:

表8.4

字段

类型

描述

可否为空

默认值

备注

TagID

自动编号

Tag编号

主键

TagName

文本

Tag

TagCount

数字

Tag使用次数

0

数据表FindPass结构如表8.5:

表8.5

字段

类型

描述

可否为空

默认值

备注

FPID

自动编号

编号

主键

UserID

数字

对应用户编号

PrivateKey

文本

密钥

FindAddTime

日期/时间

申请时间

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (393人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 建站公司
· 杰创官网
· 建站工具

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2022 版权所有 鄂ICP备17013400号