数据库部分

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

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

你可能感兴趣的:(数据库)