本篇blog将在http://blog.csdn.net/andymfc/article/details/53926845整体方案的基础上,完成对基于dragonboard 410c的智能魔镜的数据库的设计,首先我们根据方案分析,可以知道,在智能魔镜上需要保持用户信息、保持消息信息,因此,基本可以构建一个用户表userInfo和一个消息表pushInfo两个表就可以对整个智能魔镜的数据进行管理,可以方便的调用和存储相关的数据,具体的数据库设计方案如下:

上述两个表中,userInfo表用于存储系统中的用户信息,主要包括ownerID, 用户ID,Name,用户名,password 用户密码,保存的是MD5密码摘要信息,email,用户邮箱、phone 用户手机、haarValue,用户脸部特征值,pushInfo表为推送消息表,系统中所有的推送消息都被保存在该表中,其中infoID为消息的ID,ownerID为消息的拥有者的ID,表示这条消息是属于哪个用户的,系统将在后续根据这个值将消息推送给该用户,pushID,推送者,表示这条消息是由哪个用户推送过来的,系统根据该值识别推送消息的用户,infoType,消息类型,该值为0或者1 ,位0的时候表示是普通的文本消息,填写infoSubject和infoContent两个项目即可,为1的时候为视频或者音频消息,此时视频文件路径将被保存到filePath字段中,pushTime,表示推送的时间,infoValidityTIme表示的是消息的有效期,istop表示消息是否置顶,如果该值为1表示消息置顶,将优先推送该消息,viewWeight表示消息的显示权值,显示完的消息权值将减少为0不再显示。

基于上述设计,本文使用python sqlite3 接口完成了创建该数据库的编码,具体代码如下:

import sqlite3
import os.path
import random
import time
#MagicMirrorDB = sqlite3.connect("./MaigicMirrorDB.db")
#MagicMirrorDB.execute("")
#create userInfo
class MagicMirrorDB:
    def __init__(self,dbPath):
        self.DB=sqlite3.connect(dbPath)
        self.cu=self.DB.cursor()
        self.DB.execute("")
        #self.initTable()
        #self.insertTestData(5,20)

def initTable(self):
        try:
            #create userInfo table
            self.DB.execute("create table userInfo(userID integer primary key autoincrement,\
                                name nvarchar(50),\
             password nvarchar(20),\
                                email nvarchar(50),\
       phone nvarchar(50),\
                                haarValue nvarchar(50),\
                                avatarImg nvarchar(50))"
                                )
           #create pushInfo table
           #********************pushInfo table**********************#
           # infoType  0 text info, 1 video info 
           # 
            self.DB.execute("create table pushInfo(infoID integer primary key autoincrement,\
                                ownerID integer,\
                                pushID integer,\
                                infoType integer,\
                                infoSubject nvarchar(50),\
                                infoContent nvarchar(100),\
                                filePath nvarchar(1000),\
                                pushTime float,\
                                infoValidityTime float,\
                                isTop integer,\
                                viewWeight integer\
                           )")
           # self.DB.execute("create table systemStatus(statusName nvarchar(30),statusValue integer,statusParam integer ,statusDiscirption nvarchar(50))")  
                               
        except:
            print("table is already create")

在上述代码中,我们就可以通过在主函数中构建该类,完成对数据库的初始化,创建系统数据库,具体如下:

if __name__=="__main__":
    import sys
    MMDB=MagicMirrorDB("./MagicMirrorDB.db")
    print(MMDB.getUserAvatarImg(1))
    result=MMDB.getUserVideoMessageList(1)
    print(result)
    result2=MMDB.getTextMessageList(1)
    print(result2)
    sys.exit(0)

这样,在设计其他模块之前,我们就可以运行该脚本,完成数据库的创建,创建后,可以通过执行sqlite3命令查看数据库设计是否正确。

同样为了方便测试,在这里还构建了一个自动生成测试数据的函数,具体如下,通过执行该函数可以快速的生成测试信息填充数据库,就可以在后续设计模块的过程中利用这些数据进行测试。

def insertTestData(self,userInfo_n,pushInfo_n):
        for userID in range(1,userInfo_n):
            format="test%u"
            values=(userID)
            userName=format % values
            format="password_test%u"
            password=format % values
            format="email_test%uqq.com"
            userEmail=format % values
            format="phone_test%u"
            userPhone=format % values
            format="haarValue_test%u"
            haarValues=format % values
            avatar=(random.randint(1,8))
            format="./avatarImg/headImg/ali1/%u.gif"
            avatarImg=format % avatar
            format="insert into userInfo values(%u,'%s','%s','%s','%s','%s','%s')"
            values=(userID,userName,password,userEmail,userPhone,haarValues,avatarImg)
            insertSQL=format % values
            #print(insertSQL)
            self.cu.execute(insertSQL)
        for infoID in range(1,pushInfo_n):
            ownerID=random.randint(1,userInfo_n)
            pushID=random.randint(1,userInfo_n)
            infoType=random.randint(0,1)
            isTop=random.randint(0,1)
            viewWeight=random.randint(1,8)
            format = "infoSubject_pID:%u_wID:%u"
            values=(pushID,ownerID)
            infoSubject=format % values
            format = "infoContent_pID:%u_wID:%u"
            values=(pushID,ownerID)
            infoContent=format % values
            filePath=""
            if infoType==1:
                format="./messageFile/ownerID%u/pushID%u_%u.mp4"
                values=(ownerID,pushID,infoID)
                filePath=format % values
            else:
                filePath="None"
            pushTime=time.time()
            format="insert into pushInfo values(%u,%u,%u,%u,'%s','%s','%s',%f,1.0,%u,%u)"
            values=(infoID,ownerID,pushID,infoType,infoSubject,infoContent,filePath,pushTime,isTop,viewWeight)
            insertSQL=format % values
            #print(insertSQL)
            self.DB.execute(insertSQL)
            以上就是整个智能魔镜的数据库的设计,后续将在该数据库的基础上,进一步完成和完善其他功能模块的设计。

基于dragonboard 410c的智能魔镜设计(2)——数据库设计与实现相关推荐

  1. 基于Dragonboard 410c的PMIC简介

    基于Dragonboard 410c的PMIC简介主要从以下几个方面介绍: 一.PM8916芯片介绍 PM8916针对MSM8x16 / MSM8x39和MSM8929芯片组进行了优化.PM8916- ...

  2. 智能窗帘研究制作_基于51单片机的智能窗帘的研究与设计.doc

    基于51单片机的智能窗帘的研究与设计 第 PAGE \* Arabic \* MERGEFORMAT 24 页第 PAGE \* Arabic \* MERGEFORMAT 24 页 目录 TOC \ ...

  3. 基于语音交互技术的智能语音助手系统的设计与实现

    文章目录 <基于语音交互技术的智能语音助手系统的设计与实现> 1. 引言 2. 技术原理及概念 2.1. 基本概念解释 2.2. 技术原理介绍:算法原理,操作步骤,数学公式等 2.2.1. ...

  4. c语言点餐系统毕业设计任务书,毕业设计(论文)-基于c语言的智能点餐系统的设计与实现.doc...

    综合实践(论文) 题 目 基于C语言的智能点餐系统的设计与实现 学 院 通信与电子工程学院 专业班级 学生姓名 指导教师 成 绩 2013年 月 日 continually developing an ...

  5. 基于单片机的教室智能照明台灯控制系统的设计与实现

    功能介绍 以51单片机作为主控系统: LCD1602液晶显示当前时间.年月日.时分秒.前教室人数: 2路红外探头用来感应当前教室进出人数: 按键可以设置当前时间.自动手动模式.开启和关闭教室灯光时间: ...

  6. 基于SSM实现的图书管理系统-JAVA【数据库设计、源码、开题报告】

    1绪论 1.1项目研究的背景 随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现图书信息的管理势在必行.目前图书管理的借阅工作部分大多数还是手工管理,工作效率很低,并且不能及时了解 ...

  7. 软件设计之 数据库设计

    [按语:在软件设计或是动态网站开发中,数据库设计时很重要,我觉得可以说是开发工作的核心部分,所以学好数据库设计,是很重要的,也是大有前途的...]  ◆.概念 首先要搞清楚容易混淆的两个概念:&quo ...

  8. 基于Dragonboard 410c的家庭共享服务架构设计

    本文将向大家介绍如何使用dragonboard 410c 基于linux环境完成自己的私有共享服务的设计,

  9. 基于DragonBoard 410c android系统实现红外遥控功能

    阅读本文之前,相信大家对DragonBoard 410c有了一个大致的了解了,包括对DragonBoard 410c的介绍与系统烧写步骤以及系统定制(Android系统定制和linux系统定制).随着 ...

最新文章

  1. 数字图像处理实验(3):PROJECT 02-03, Zooming and Shrinking Images by Pixel Replication
  2. Maven把一个Application转换成WebProject
  3. Linux/Unix环境下的make命令详解
  4. spring react_使用Spring WebFlux构建React性REST API –第2部分
  5. [渝粤教育] 中国地质大学 结晶学与矿物学 复习题 (2)
  6. 设计模式学习笔记——工厂(Factory)模式
  7. 转:基于iOS上MDM技术相关资料整理及汇总
  8. java 轻量级 编辑器_Java相关概念汇总
  9. 2.kafka 安装
  10. 如何在云端编译APIcloud代码
  11. 机器学习与深度学习基本概念 学习笔记
  12. VBoxGuestAdditions加载不了
  13. 计算机四级要学多长时间,过计算机四级要多长时间哦?
  14. 协方差的计算公式例子_协方差公式_协方差的计算公式例子
  15. Kickoff(上路了)
  16. 机器学习中的主动学习实现_我如何使用机器学习来帮助实现正念
  17. 程序员的进化,Python程序员是最大的亮点
  18. Gamemaker studio2经验(2)——TCP联机
  19. pyopenpose文档
  20. Matlab 入门01

热门文章

  1. cloudfront s3_如何使用S3,CloudFront和Route53托管静态网站
  2. 电容式触摸感应技术原理之自容式触摸按键电极设计建议(3)
  3. OpenCV每日函数 计算摄影模块(5) 无缝克隆算法
  4. HDU2067——小兔的棋盘(迷宫,动态规划,卡特兰数)
  5. 解决 Debug编译时,警告:warning LNK4099: 未找到 PDB“vc90.pdb”
  6. matlab中短时傅里叶变换tfrstft函数用法
  7. JavaScript动态钟表
  8. BNUOJ 美女来找茬
  9. 7思妙想之Js 实现for循环中的停顿
  10. float类型的存储方式