关于字典表与实例表的思考
来源:互联网 发布:购买域名的网站 编辑:程序博客网 时间:2024/06/14 03:15
为什么要引入字典表和实例表
首先我们来看一个小例子,来理解为什么要引入字典表和实例表?情景一:假如你在玩一个游戏,突然爆了一件十分稀有的武器,假如开发者设计的表是这样的:table inst_equip( id, userId, 装备名称, 装备图片, 装备属性, ...);这样看起来不会有什么问题,只需要在inst_equip表中加入一条记录就好。接着我们来看下一个情景。情景二:如果这件装备突然被系统赠送给10000名玩家,那么问题就来了...数据库的inst_equip表在添加记录时需要将这件装备的信息重复添加10000次。然而这并不是致命的,如果系统觉得这件装备太bug了,要修改它的某个字段,那么这10000条inst_equip表的记录每条都要进行同样的修改...
解决方案
于是游戏开发者决定将装备的信息从equip表中抽离出来,建立table dict_equip( id, 装备名称, 装备图片, 装备属性, ...);这样的话,inst_equip表就变成了这样:table inst_equip( id, userId, equipId, //游戏字典表的ID ...);
好处
这样的话,如果需要对装备属性进行修改的话,就只需要对dict_equip记录的一条记录进行修改。有点像JAVA中的组合。
什么是字典表和实例表
说了这么多,那么什么是字典表和实例表呢?字典表:简单来说就是用户的各种操作不会对其记录产生影响(增删改),它存放一些与用户不相关的信息。如:dict_equip(装备字典表)实例表:反之,实例表则是与用户的信息息息相关的一些信息。如:(inst_equip)玩家装备实例表
思考
这样分表有什么好处呢?(1)首先,逻辑上看着更加清晰,因为系统是为用户服务的,所以建表分成与用户相关的表(实例表),与用户不相关的表(字典表);(2)其次,就是上面说到的便于字典表数据的维护(增删改操作);(3)再者,查询数字的效率要比查询字符串高,且存储空间更小(字符串重复的存储会造成空间的浪费);(3)最后,就是减少了数据库中数据的冗余。满足第三范式的要求。
阅读全文
1 0
- 关于字典表与实例表的思考
- 关于字典转模型的一些思考(持续更新中)
- 关于 struts2 单例 实例的思考
- VBA: 字典的介绍与实例
- 关于思考的思考
- 关于思考的思考
- 关于判定表的一点思考
- 关于插入有外键约束表的思考
- 关于Java栈与堆的思考
- 关于Java栈与堆的思考
- 关于Java栈与堆的思考
- 关于Java栈与堆的思考
- 关于Java栈与堆的思考
- 关于Java栈与堆的思考
- 关于Java栈与堆的思考
- 关于Java栈与堆的思考
- 关于Java栈与堆的思考
- 关于Java栈与堆的思考
- 前端跨域的问题
- cacheUtils
- 状态选择器及Button形状
- android 动画详解
- angularjs指令中的compile与link函数详解
- 关于字典表与实例表的思考
- vue指令大全
- Leetcode84. Largest Rectangle in Histogram.
- Master: Error: JAVA_HOME is not set and could not be found.
- 事物的五种隔离级别
- xxxx
- MyEclipse修改项目url访问路径的问题
- jacob
- ubuntu 安装 GCC 和 G++ C++ 开发环境