关于数据库这部分,目前先用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语句了。今天已经写了一部分了,明天可以写完。

关于数据源连接池的规范在项目部署里。

posted on 2012-07-17 19:51  TeamWork  阅读(194)  评论(0编辑  收藏  举报