关于数据库这部分,目前先用mysql 5.5,以后如果数据量大了再考虑移植到sql server 2008上。
今天我先写了建表、视图、测试数据一部分而已。明天要建立触发器来扩展sensor_data那一部分。
建表(为了便于记忆,很多名字我只用了拼音,勿喷):
-- 创建一个名为sensor的数据库 CREATE DATABASE sensor; USE sensor; -- 老人的帐号 CREATE TABLE ancestor ( ancName VARCHAR(20) PRIMARY KEY, ancPwd VARCHAR(20) NOT NULL ); -- 子女的帐号 CREATE TABLE descendant ( desName VARCHAR(20) PRIMARY KEY, desPwd VARCHAR(20) NOT NULL ); -- 两者的映射 CREATE TABLE relation_map ( ancName VARCHAR(20) REFERENCES ancestor(ancName), desName VARCHAR(20) REFERENCES descendant(desName), PRIMARY KEY(ancName, desName) ); -- 最原始的传感器数据表,假定所有数据类型均为int -- 在后面还要通过触发器,存储统计数据来减少数据量 CREATE TABLE sensor_data ( cur_time DATETIME PRIMARY KEY, belonger VARCHAR(20) REFERENCES ancestor(ansName), -- 手指穿戴的模块 -- 加速度传感器 finger_jiasudu_x int, finger_jiasudu_y int, finger_jiasudu_z int, -- 角速度传感器 finger_jiaosudu_x int, finger_jiaosudu_y int, finger_jiaosudu_z int, -- 磁力传感器 finger_cili_x int, finger_cili_y int, finger_cili_z int, -- 温度和气压传感器 finger_wendu int, finger_qiya int, -- 脖子上穿戴的模块 -- 加速度传感器 chest_jiasudu_x int, chest_jiasudu_y int, chest_jiasudu_z int, -- 角速度传感器 chest_jiaosudu_x int, chest_jiaosudu_y int, chest_jiaosudu_z int, -- 磁力传感器 chest_cili_x int, chest_cili_y int, chest_cili_z int, -- 温度和气压传感器 chest_wendu int, chest_qiya int, -- 脚上穿戴的模块 -- 加速度传感器 ankle_jiasudu_x int, ankle_jiasudu_y int, ankle_jiasudu_z int, -- 角速度传感器 ankle_jiaosudu_x int, ankle_jiaosudu_y int, ankle_jiaosudu_z int, -- 磁力传感器 ankle_cili_x int, ankle_cili_y int, ankle_cili_z int, -- 温度和气压传感器 ankle_wendu int, ankle_qiya int, -- 手机GPS导航部分 latitude DOUBLE, -- 纬度 is_north int DEFAULT 1, -- 判断是否为北半球 longitude DOUBLE, -- 经度 is_east int DEFAULT 1 -- 判断是否为东半球 );
说明:前3张表有一个对应关系。我的想法是:设立ancestor和descendant这两种用户。然后,在ancestor用户的选项里,可以通过添加监控用户(即descendat用户),把这种对应关系映射到表relation_map里。这一点后期开发人员可以参考。
注意各表之间的约束关系。
传感器数据类型还不明确,目前统一用int来表示。
这只是初期供参考的表,后期会修改和完善。
按照论文,老人身上应该戴有3个传感器,所以我分别为它们建立视图:
USE sensor; CREATE VIEW finger_view AS SELECT cur_time, belonger, finger_jiasudu_x, finger_jiasudu_y, finger_jiasudu_z, finger_jiaosudu_x, finger_jiaosudu_y, finger_jiaosudu_z, finger_cili_x, finger_cili_y, finger_cili_z, finger_wendu, finger_qiya FROM sensor_data; CREATE VIEW chest_view AS SELECT cur_time, belonger, chest_jiasudu_x, chest_jiasudu_y, chest_jiasudu_z, chest_jiaosudu_x, chest_jiaosudu_y, chest_jiaosudu_z, chest_cili_x, chest_cili_y, chest_cili_z, chest_wendu, chest_qiya FROM sensor_data; CREATE VIEW ankle_view AS SELECT cur_time, belonger, ankle_jiasudu_x, ankle_jiasudu_y, ankle_jiasudu_z, ankle_jiaosudu_x, ankle_jiaosudu_y, ankle_jiaosudu_z, ankle_cili_x, ankle_cili_y, ankle_cili_z, ankle_wendu, ankle_qiya FROM sensor_data; CREATE VIEW gps_view AS SELECT cur_time, belonger, latitude, is_north, longitude, is_east FROM sensor_data;
对于数据库的使用,我打算使用JavaBean把一些操作都封装起来,以后就直接调用里面的方法而不用嵌入sql语句了。今天已经写了一部分了,明天可以写完。
关于数据源连接池的规范在项目部署里。