短网址生成设计与实现

2016年11月21日来源:980短网址原创分类:短网址阅读(71评论(0

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

短网址数据库设计

  短网址服务一、数据库设计

  980短网址系统采用了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框架,是一个典型的分层体系结构,按照各自职责主要分为表示层、业务逻辑层、数据持久层,利用这一分层架构来进行各个模块的开发。

  表示层中包含三个包和功能职责:

  1、Authority:内部包含了负责实现所有拦截客户请求的各种Interceptor实现类。

  2、Action:内部包含了负责实现所有需要处理客户请求的各种Action实现类。

  3、fbnnat内部包含了负责根据页面组件需求格式化返旧数据的各种Format实现类。

  页务逻辑层中包含七个包和功能职责:

  1、SerVlCe:内部包含了业务逻辑接口,包括短网址转换短网址分组,短网址统计分析等的接口;

  2、Servicelmpl:内部包含了所有业务逻辑实现类,包括短网址转换短网址分组,短网址统计分析等实现类;

  3、Jms:内部包含了项目中实现JMS相关的接口;

  4、Jmslmpl:内部包含了项目中JMS相关的实现类;

  5、Poi:内部包含了项口中实现Excel导出相关的接口;

  6、Poilmpl:内部包含了项目中Excel导出相关的实现类;

  7、dbDynamic:内部包含了Mysql切换主、从数据库相关的实现类;

  数据持久层中包含四个包和功能职责:

  Daobase:内部包禽了Dao的抽象类;

  dao内部包含了根据业务逻辑进行数据库读写操作相关的接口;

  daolmpl内部包含了根据业务逻辑进行数据库读写操作相关的实现类;

  model内部包含了短网址分组,短网址统计分析等相关的实体类;

  异常处理中有一个包和功能职责:

  Exception:内部包含了对系统异常和用户出错提示统一处理的相关实现类;

上一篇:最简单识别短网址是否安全的方法

下一篇:短链接和短网址二维码竟然可以这么用

精彩评论
评论
热门文章
980安全专家教您认识短链接安全
防护恶意网址用短链接欺骗的对策
对付恶意短链接我有妙招
蓝瘦、香菇,每天和短链接技术打交道
短信利用短网址撬动移动营销市场
文章归档
2016年12月
2016年11月
2016年10月
2016年09月
2016年07月
2016年06月
热门标签
短网址
短链接
网址缩短
短网址服务
短网址应用
短网址营销
短网址生成
缩短网址
短链接生成
短网址还原
短网址检测法
自定义短网址