设计了4个表,User,Fleed,Locator,Coordinate分别表示用户,轨迹服务,设备管理,历史轨迹。
其中每个用户可以有多个轨迹服务,一个轨迹服务可以有多个定位设备,不同设备的定位数据由coordinate_locator区分。
整个平台后台由Python开发。数据库的访问和操作使用了轻量级ORM框架sqlobject(也可以使用Sqlalchemy或Peewee等其他ORM框架)。表定义代码如下:
代码语言:python代码运行次数:0复制# -*- coding:utf-8 -*-
from sqlobject import *
import os
class User(SQLObject):
user_name=StringCol(notNone=True)
user_fleeds=MultipleJoin('Fleed',joinColumn="User")
class Fleed(SQLObject):
fleed_name=StringCol(notNone=True,default='Untitled')
fleed_user=ForeignKey('User')
fleed__locators=MultipleJoin('Locator')
class Locator(SQLObject):
locator_name=StringCol(notNone=True,default='Untitled')
locator_fleed=ForeignKey('Fleed')
locator_coordinates=MultipleJoin('Coordinate')
class Coordinate(SQLObject):
coordinate_x=FloatCol(default=90)
coordinate_y=FloatCol(default=90)
coordinate_time=DateTimeCol(default=DateTimeCol.now())
coordinate_locator=ForeignKey('Locator')
def initDatabase():
connectionString='sqlite:./GPS_DB.db'
con=connectionForURI(connectionString)
sqlhub.threadConnection=con
def createTables():
User.createTable(ifNotExists=True)
Fleed.createTable(ifNotExists=True)
Locator.createTable(ifNotExists=True)
Coordinate.createTable(ifNotExists=True)
def deleteTables():
User.dropTable(ifExists=True)
Fleed.dropTable(ifExists=True)
Locator.dropTable(ifExists=True)
Coordinate.dropTable(ifExists=True)
if __name__=='__main__':
initDatabase()
#createTables()