关键字: Database database sybase
需求很简单:
- 1:一个对象,它对应数据库中的一条记录。
- 2:这个对象可能有很多boolean属性,例如isXX1, isXX2, isXX3,isXX4(但是有限,未来还可能增加)。
- 3:这个对象的这些属性在应用中可能被频繁的更新。
设计方案
方案1:
- 对象主表,用于保存对象常规属性,例如,id,name等等。
- 对象boolean属性表,跟对象主表外键关联。
方案2:
- 对象主表中多一个字段bool_status
- 用二进制的byte来表示对象的boolean属性
- 例如:isXX1 = 1, isXX2 = 2, isXX3=4, isXX4=8, isXX5=16
- 然后bool_status存放所有boolean属性之和。
- 例如对象A拥有issXX1=true, isXX2=true,那么这个对象在数据库中bool_status的值就是3
- 例如对象b拥有issXX1=true, isXX5=true,那么这个对象在数据库中bool_status的值就是17
简单分析利弊:
对于一个对象查询:
- 方案1:需要2条sql才能查出一个对象
- 方案2:一条sql就可以查出一个对象
对于一个对象插入:
- 方案1:一定是1+cont(boolan_attr=true)条insert sql
- 方案2:一条update sql
对于一个对象boolean属性的更新:
- 方案1:1条delete+cont(boolan_attr)条insert sql
- 方案2:一条sql就可以更新
对于一个对象的删除,都暂不考虑记录历史
- 方案1:1条delete主表+1条delete bool属性表
- 方案2:1条delete主表
对于空间占用:
通过上面的分析好像天平已经很明显倒向了方案2.但是方案2也有一些弊端
- 1:对于统计不是很友好,例如针对统计对象的没个属性进行统计,某些属性的组合进行统计,那么对于方案2就不得不对表中所有的bool_status进行&计算,这个不利于数据库运用索引。
- 2:如果一个对象的boolean属性有很多是true那么bool_status这个值望望会令人不知所云,一定要应用程序decode才能看出来这个对象到底那些boolean属性是true。
我更倾向于方案1,因为它更清晰,插入和更新的效率虽然不如方案2,但是我更看重程序设计的清晰性,不知道大家有什么见解? |
分享到:
相关推荐
布尔对象 将对象中的属性值转换为布尔值。安装 npm install boolean-object用法 var booleanObject = require ( 'boolean-object' )var obj = { foo : 'true' , bar : 'false' , baz : 1 , qux : 0 , str : 'string'...
Boolean RT资源包,可用于Unity 几何体布尔运算
我们提供 JavaScript Boolean 对象参考手册,其中包括所有可用于布尔对象的属性和方法。 该手册包含了对每个属性和方法的详细描述以及相关实例。 创建 Boolean 对象 Boolean 对象代表两个值:”true” 或者 “false...
有三个属性 面码:String theMa 粉的分量(两) int quantity 是否带汤 boolean likeSoup 2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen("牛肉",3,true)。 3.重载构造方法 使得初始化过程...
Boolean对象和Java中的Boolean封装类很像,它有两个值:true和false 1、创建Boolean对象 复制代码 代码如下:var boo = new Boolean();//此时未对boo进行赋值,但是它的默认值为false var boo = new Boolean(true);...
Intent可以携带一些数据,比如基本类型数据int、Boolean,或是String,或是序列化对象,Parcelable与Serializable。 Intent传递数据时,如果数据太大,可能会出现异常。比如App闪退,或是Intent发送不成功,logcat...
BooleanRT, 实现2个物体间的布尔运算 The extension provides the following functions: 1- Real-time or per-click Boolean execution. 2- Material, UV and texture preservation. 3- Saving to prefab. 4- ...
有三个属性 面码:String theMa 粉的分量(两) int quantity 是否带汤 boolean likeSoup 2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen("牛肉",3,true); 3.重载构造方法 使得初始化过程可以...
constructor 属性返回对创建此对象的 Boolean 函数的引用。 prototype 构造器 为 Boolean 对象创建一个新的方法: Boolean.prototype.myColor=function() { if (this.valueOf()==true) { this.color=
前言布尔值Boolean类型可能是三种包装对象Number、String和Boolean中最简单的一种。Number和String对象拥有大量的实例属性和方法,
Java是一种面向对象的编程语言,具有强大的数据类型系统。了解Java中的基本数据类型及其操作是java编程的基础。本实验报告将介绍Java中的基本数据类型、数据类型转换、控制台输入输出方法和对话框输入输出方法。 一...
boolean_approach
在本文中,我们将对 Java 数据类型和 MySql 数据类型进行对应一览,帮助开发者更好地理解和使用这两种类型。 字符串类型 在 Java 中,字符串类型对应的是 java.lang.String 类型。在 MySql 中,字符串类型对应的是...
Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false)。 创建 Boolean 对象 使用关键词 new 来定义 Boolean 对象。下面的代码定义了一个名为 myBoolean 的逻辑对象: var myBoolean=new Boolean() ...
Out对象用于各种数据的输出。其常用方法如下。 ● out.print():输出各种类型数据。 ● out.newLine():输出一个换行符。 ● out.close():关闭流。 6、Cookie对象 (1)什么是Cookie Cookie是...
我们知道,JavaScript中检测对象类型的运算符有:typeof、instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一个说明运算数类型的字符串。如:”number”,”string”,”...
下面小编就为大家带来一篇JS字符串false转boolean的方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
NULL 博文链接:https://hw1287789687.iteye.com/blog/1949399
Unity 几何体布尔运算BooleanRT,Boolean RT.unitypackage,unity3d布尔运算插件。