短链接设计生成与实现

短网址服务系统的设计与实现。根据在之前提及的相关需求,对短网址系统进行设计建模。设计建模阶段将深入理解与非功能性需求和约束相联系的编程语言、组件重用、数据库技术等。通过设计模型把实现工作划分成更易于管理的各个部分。具体包括数据库设计,包图设计,总体类设计,以及各模块内部的流程设计,类设计,序列图设计,接口设计等。在本文中主要使用Java语言进行程序设计。
\"短网址\"
短网址数据库设计
短网址服务一、数据库设计

mrw.so短网址系统采用了MySql数据库,在设计和构建数据库过程中,主要采用了以下原则建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求:

(1)标准化和规范化。数据的标准化有助于消除数据库中的数据冗余。本系统数据库设计遵循了ThirdNormalForm(3NF),使得数据库在性能、扩展性和数据完整性方面达到了最好平衡。

(2)键设计原则:

1)为关联字段创建外键;

2)所有的键都必须唯一;

3)避免使用复合键;

4)外键总是关联唯一的键字段;

(3)索引使用原则。大多数数据库表索引为自动创建的主键字段,同时使用合理使用外键,以最大程度满足业务数据的完整性。添加索引时,索引字段应挑选重复值较少的字段;在对建有复合索引的字段进行检索时,应注意按照复合索引字段建立的顺序进行。

(4)用约束而非商务规则强制数据完整性。在写数据的时候增加触发器来保证数据的正确性,不纯粹依赖于业务代码保证数据完整性。

短网址服务二、逻辑结构设计

主要实体有四种:user为用户实体,主要用来存储用户相关信息,包括用户名称,用户ID,用户最近登录时间,用户拥有短网址数等字段;

shorturl为短网址实体,主要用来存储短网址相关信息,包括短网址名称,短网址ID,短网址对应原网址,创建者,创建时间等字段;

group为短网址分组实体,分为两种类型。一种是元组,一种是二级组。在之前需求中有涉及到相关的概念:在元组中,只可包含短网址;在二级组中可以包含短网址,也可以包含元组,但二级组内部不可包含其他二级组。在这两个实体中主要用来存储短网址分组的信息:包括分组ID,分组名称,分组描述等;

count表为短网址统计实体,根据《满足用户需要之短网址统计分析》需求分别有短网址时段统计、短网址日统计、短网址月统计、短网址地域统计、短网址来源统计、短网址用户终端操作系统统计、短网址用户终端浏览器统计、短网址用户终端屏幕分辨率统计、短网址用户终端语言环境统计等实体。在这些实体中主要用来存储不同的统计项以及统计数据。

其中,user与shorturl之间为一对多的关系,用户可以创建出多条属于自己的短网址。shorturl与group之问是多对多的关系,一个分组可以包含多条短网址,一条短网址可以被多次包含进不同的分组。short与count之间是一对多的关系,一条短网址可以在各个统计实体中有多条统计数据记录。

短网址服务三、物理结构设计

根据之前设计出的ER模型,将各个实体扩展并且根据需求,设计的物理结构。

用户登录注销模块主要使用到了:user、admin—user、userlogin三张数据库表,分别用以存储用户信息、管理员信息以及用户登录信息;

转换短网址模块主要使用到了:shorturl、user两张数据库表,其中的shorturl用以存储短网址信息。

短网址管理模块主要使用到了:shorturl数据库表;

短网址分组模块主要使用到了:shorturl、cell、group、group2cell、group2shorturl、cen2shorturl等数据库表,其中的cell表主要用以存储元组信息,group主要储二级组信息,group2cell、group2shorturl、cell2shorturl用以维护shorturl、用以存cell、group三者之间的关联关系。

短网址统计分析模块主要使用到了:shorturl—hour—count、shorturl_day_count、shorturl—month—count、shorturl—os—count、shorturldistcount以及网址流量各项统计数据。

短网址服务四、包结构设计

短网址服务器端实现采用的是Struts+Spring+Hibemate框架,是一个典型的分层体系结构,按照各自职责主要分为表示层、业务逻辑层、数据持久层,利用这一分层架构来进行各个模块的开发。