`
jackle_liu
  • 浏览: 145833 次
文章分类
社区版块
存档分类
最新评论

节约数据库空间的一个小技巧

阅读更多

 

在网站、管理软件的开发中,经常会碰到多选框。例如:用户可以设置自己愿意接收的邮件类型 1:从不接收 2:接收自己follow的博客的更新信息 3:接收新闻 4:接收私人信息。

 

这时我们可以选择传统的方式。定义一些字符串常量,例如:

public static final String EMAIL_OPTION_NEVER = "NEVER";
public static final String EMAIL_OPTION_FOLLOWED = "FOLLOWED";
public static final String EMAIL_OPTION_NEWS = "NEWS";
public static final String EMAIL_OPTION_PERSONAL = "PERSONAL";

 

对应的JSF页面如下:

<h:selectManyCheckbox id="optionsCheckbox" value="#{consumerAccountAction.emailOptionList}" layout="pageDirection" onclick="clickOptionCheckbox();">
				   <f:selectItem  itemLabel="#{messages['label_emailoption_never']}" itemValue="NEVER"/>
				     <f:selectItem  itemLabel="#{messages['label_emailoption_news']}" itemValue="NEWS" />
				      <f:selectItem  itemLabel="#{messages['label_emailoption_followed']}" itemValue="FOLLOWED" />
				       <f:selectItem  itemLabel="#{messages['label_emailoption_personal']}" itemValue="PERSONAL" />
 </h:selectManyCheckbox>

 

 

假设数据库中有一个表的字段名为email_options。这样当用户选择2,3的时候, email_options中存储的数据就可能是 “FOLLOWED,NEWS”。

 

而在实际要给用户发邮件的时候,就要判断这个字段中存在的值,例如:if(emailOption.indexOf(EMAIL_OPTION_NEVER)!=-1)

 

 

上述传统的解决方案没有问题,但是数据库中存储的数据还是占用空间过多。有一种办法可以极大的降低占用空间,业务逻辑上也不会复杂。

 

重新定义常量(常量按照2的次方递增):

public static final String EMAIL_OPTION_NEVER = "1";


public static final String EMAIL_OPTION_FOLLOWED = "2";


public static final String EMAIL_OPTION_NEWS = "4";


public static final String EMAIL_OPTION_PERSONAL = "8";

 

 

 

并让字段email_options中存储的值为FOLLOWED|NEWS, 而判断的时候可以用if((emailOption&EMAIL_OPTION_NEVER)!=0).

 

 

'|' 和'&' 是位运算符。具体大家可以去google. 这样数据库中存储的仅仅是一个数字,比一长串的字符串占得空间要少得多。

 

 

 

 

 

 

 

0
1
分享到:
评论

相关推荐

    SQL Server 2005 查看数据库表的大小 按照表大小排列

    昨天要一个大型数据库,内容1G多,表也几百个,命名规则也不太了解,打开很多表是空的,看的头疼。 于是上网找了这个好东西,可以把数据库里的表按照大小排列出来,并且显示表的内容大小。 大大节约时间, 真是个...

    空间数据库的设计.doc

    物理设计的好坏将对地理数据库的性能影响很大,一个好的物理存储结构必须满足 两个条件:一是地理数据占有较小的存储空间;二是对数据库的操作具有尽可能高的处 理速度。在完成物理设计后,要进行性能分析和测试。 ...

    MSSQL数据库备份工具

    用于备份MSSQL数据库的工具软件,可按指定的计划备份MSSQL数据库,并将备份后的文件下载到本地。 该程序是站长必备工具。...3、可自动清理过期的备份文件,节约主机空间资源。 4、下载的备份文件可以自动打包。

    数据库系统概论第四版答案

    数据的存取单位即一次可以存取数据的大小也很灵活,可以小到某一个数据项(如一个学生 的姓名),大到一组记录(成千上万个学生记录)。而在文件系统中,数据的存取单位只有一 个:记录,如一个学生的完整记录。 ( 2...

    有效节约桌面空间,让桌面更清爽!!

    有效节约桌面空间,让桌面更清爽!!有效节约桌面空间,让桌面更清爽!!有效节约桌面空间,让桌面更清爽!!

    Flash和数据库结构

    详细介绍,如何把一个flash块,编写成一个动态数据库,保证数据的可靠性,任何时候掉电,丢失的最多是最近一次操作的记录。主块和备份块交替保存数据,效率高,安全。根据记录的实际大小,动态的分配空间,有效的...

    C#数据库定期备份与删除

    个人闲暇时间制作的一个基于C#的SQL Server数据库定期备份软件,除两条最新备份外删除所有备份,节约了硬盘空间,内容涉及到数据库连接,字符串截取,目录获取创建,文件创建删除,计时器冒泡排序的使用!

    录信数据库技术白皮书.pdf

    录信数据库一款基于分布式架构下实时的、多维的、交互式的查询、统计、分析数据库;录信数据库是为探索性分析与即席分析而设计的数据库,使用索引+大数据技术,可以对万亿级别的数据做到秒级数据检索及统计分析服务...

    MySQL数据库下载资源包。

    包含文件:里面包含了一个下载文档和相关资源,有前辈的提示和截图,大家按照文档可以更好食用。完全就是保姆级别的下载教程。 建议:如果还是觉得有困难的话,我推荐大家看视频下载。网址:...

    SQL Server数据库自动备份

    SQL Server数据库定时自动备份,并能定期自动删除旧备份,以节约磁盘空间,从而提高效率。该文件采用图片演示步骤,通俗易懂,一看即会。

    公交线路查询系统的数据库设计.doc

    因此,本文基于公交线路查询系统,提出了数据库的设计方案,从根本上解决了公交线 路查询的弊端问题,便于人们在出现之前获取到最优的路线信息,节约了人们的出行时 间,又降低了城市公交的运输压力,有利于城市...

    php封装数据库操作类.zip

    在网站开发时比较合理的做法就是我们的常用的一些程序做成函数或封闭成类,这样可以重复利用,可以节约开发... 以下例子有四个文件:configuration.php db.class.php user.class.php test.php,放在同一个目录下.

    Java理论与实践:在没有数据库的情况下进行数据库查询

    HSQLDB是一个用Java语言编写的可嵌入的数据库引擎。XQuery为生成XML或者HTML文档作为查询结果而设计的,因此不需要对查询结果进行后处理。从开发成本角度看,XQuery方法已证实可以节约大量成本。树型结构对于构建和...

    基于spring boot和微信小程序的图书销售系统源代码(毕业论文+程序设计源码+数据库文件).zip

    安装教程 MySQL数据库,脚本文件在doc目录下 先启动后台shop项目,...包含后台管理端,和微信小程序用户端两个功能模块;开发语言基于Java同时使用spring boot作为后端开发框架后台管理端功能包含RBAC权限管理模块。

    开源节流 五个小技巧帮你节约你的虚拟主机

    软件简介 本软件通过强大的扫描引擎,准确识别当前PDF文件中图象格式的文字,并且自动添加书签,极大的方便了使用Acrobat对PDF文件进行整理的读者,使得之前的繁琐一扫而空!

    数据库表结构自动生成工具

    基于C#开发的数据库表结构说明文档生成工具,能通过连接数据库,快速生成数据库表结构说明文档,节约时间。

    三层ADO的Internet远程数据库访问开发套件

    多个客户端共享同一个数据库连接对象,可设定每个客户端独占数据库连接对象时间和自动回收时间。 大量减少数据连接数量,减少数据库的负载,极大提高数据库访问速度。根据设定的缓冲时间,可节约80%~95%连接对象...

    公交线路查询系统的数据库设计(1).doc

    公交线路查询系统的数据库设计 【摘 要】随着城市规划建设的发展,城市人口数量的持续激增,城市公交由于其价格低廉、 安全稳定、乘坐方便、线路数量多、环境污染小等特征,成为了城市人们出行的首选交 通方式。...

    55个seo小技巧

    55个seo小技巧,对于初学SEO的新人来讲,这是一个快速节约时间的入门方式

Global site tag (gtag.js) - Google Analytics