如果有各种设备,例如空调,广告灯...这些设备都是存在不同的属性,空调有风速,温度;广告灯有亮度;而且这些设备的属性值都会用到,而且属性可能会新增
现在问题是,如果以后会动态新增一个排气扇设备,有风速等属性,我的表该如何设计才能更好地扩展,在新增各种设备以及属性的时候不需要改动表结构...请大家支招吧...数据库设计扩展Java结构
现在问题是,如果以后会动态新增一个排气扇设备,有风速等属性,我的表该如何设计才能更好地扩展,在新增各种设备以及属性的时候不需要改动表结构...请大家支招吧...数据库设计扩展Java结构
解决方案 »
- 在一个可执行jar包里有个类a.class,同目录下还有a$1.class,a$2.class,请问这些是什么文件
- 这是什么错误 怎么解决?
- 我要安装eXist数据库,但是在windows的运行栏输入java -jar c:\eXist-setup-1.2.4-rev8072.jar后,只能进入windows/java文件夹,不能安装eXist,请问高人,这是怎么回事?
- weblogic下面使用getRealPath的问题
- hibernate新手问个简单问题。。。急。。。在线等
- 请教内隐类!!!!!
- 请问使用struts1.1 错在那
- [求助]??关于struts问题??
- 配置JDBC
- EJB高手看过来!!
- el表达式问题
- 帮忙看下这个程序的问题
比如json格式字符串。
我也没什么经验,期待高手解答
推荐一种适合初学者的吧:
1、首先归集产品的通用属性,只需要80%产品有这种属性即可,比如:重量、颜色、尺寸这类;
2、通用属性直接作为字段存在;
3、附加属性用违反 1NF 的方式,直接用JSON或其它方式组装,存入一个扩展域字段。
通用属性往往需要在列表中:显示(Select)、过滤(where)、排序(Order);所以需要直接成为字段。
非通用属性一般都是在显示某产品明细信息时才需要使用,所以存储时可以做组装。
属性表:id,name,fk。
这样增加任何设备,任何属性都可以啊
我猜测下你的主体设计,看是否类似:
1、存储表采用横表,也就是一行即可存储一个完整设备的所有属性;
2、存储表的字段,大部分是不含业务语义的,取名可以是 F01、F02、F03;
3、有分类表和字段语义对照表,分类表包含所有设备种类;
4、字段语义对照表,标明每个设备种类在存储表中的字段,其业务语义是啥,比如F01是 重量;
是否类似这种?
属性表:id,name,fk。
这样增加任何设备,任何属性都可以啊咔咔,需要继续加深理解
我猜测下你的主体设计,看是否类似:
1、存储表采用横表,也就是一行即可存储一个完整设备的所有属性;
2、存储表的字段,大部分是不含业务语义的,取名可以是 F01、F02、F03;
3、有分类表和字段语义对照表,分类表包含所有设备种类;
4、字段语义对照表,标明每个设备种类在存储表中的字段,其业务语义是啥,比如F01是 重量;
是否类似这种?简单的来说就是非确定意义属性记录,然后再加定义描述关联属性记录?
你要想想如何不改变表任何表的设计就可以任意添加各种类型的属性,包括int,string,date型等等,
然后这些属性的值又如何存储,
最后又如何查询某一种设备的某一个属性值,
这绝不是2,3张表可以搞定的
这看你如何去对应了。不管谁去控制,你取到的数据和你表里的字段对应上就行了。
确实做过:
从垂直属性表(属性全部用varchar,使用时根据配置转换),
到无业务语义字段表(属性共255项,预留不同类型的,但大部分仍然是varchar),
到1主表+N扩展表(公共属性放主表,跟类型相关属性放专用扩展表,扩展表自动可按需在Web页面动态配置),
到主属性+扩展XML(公共属性放主表,整个实体的所有属性完整保存一份XML,字段类型由XSD管理;展现的时候直接把XML读出来扔给表单,自动就绑定回去了)。
目前综合来看,还是最后一种性价比适中。
能否简单介绍下你的模型?
确实做过:
从垂直属性表(属性全部用varchar,使用时根据配置转换),
到无业务语义字段表(属性共255项,预留不同类型的,但大部分仍然是varchar),
到1主表+N扩展表(公共属性放主表,跟类型相关属性放专用扩展表,扩展表自动可按需在Web页面动态配置),
到主属性+扩展XML(公共属性放主表,整个实体的所有属性完整保存一份XML,字段类型由XSD管理;展现的时候直接把XML读出来扔给表单,自动就绑定回去了)。
目前综合来看,还是最后一种性价比适中。
能否简单介绍下你的模型?我也想了解下
flagiris
的模型设计
把以前的 where 温度 = 3
改成 where name = 温度 and value = 3不过最好用mongodb 支持非结构存储
要不就用postgresql 支持数组