天天看点

校车定位服务系统数据库初步设计

数据库和接口设计

1、 分析

设计了以下数据库模型。此次数据库采用较为简单的MS SQL,主要有五个表单,Tab_Station(汽车停靠站点),Tab_RegBus(班车时刻信息),Tab_Bus(汽车信息表),Tab_Admin(管理员信息),Tab_System(系统信息)。

2、 数据库基本表单

Tab_Station:

列名 数据类型 允许空 备注

StaID Int No 站点编号

StaName Varchar(25) 站点名

StaLati Float 经度

StaLongi Float 纬度

Tab_ReguBus

列名 数据类型 允许空 备注

RegID Int no 班车时刻编号

RegDocking Varchar(25) 停靠站

RegDrivInterval Varchar(50) 行车区间

RegPickUp Varchar(25) 上车地点

RegFirstTime Time 首发时间

RegDriveDirect Varchar(100) 行车路线

RegTeam Varchar(25) 所属车队

Tab_Bus

列名 数据类型 允许空 备注

BusID Int No 汽车编号

BusLati Float 经度

BusLongi Float 纬度

BusTime Time 时间

Property Varchar(100) 记录汽车属性(待定)

Tab_Admin

列名 数据类型 允许空 备注

AdmID Int No 管理员编号

AdmName Varchar(25) No 管理员姓名(账号)

AdmPWD Varchar(25) No 密码

LoginIP Varchar(25) 登陆IP

LoginLog Varchar(100) 操作日志

LogTime time 记录时间

Tab_System

列名 数据类型 允许空 备注

SysID int no 系统信息编号

LoginIP Varchar(25) 事件对应IP地址

SysTime Time 事件发生时间

SysLog Varchar(100) 系统操作

IsAdmin Int 是否为管理员

Property Varchar(25) 拓展

3、 SQL

Create database BD_DB

GO

use BD_DB

GO

create table Tab_Station

(StaID int identity(1,1) primary key not null,

StaName varchar(25),

StaLati float,

StaLongi float

);

GO

create table Tab_RegBus

(RegID int identity(1,1) primary key not null,

RegDocking varchar(25) not null,

RegDrivInterval varchar(25),

RegPickUp varchar(25),

RegFirstTime time,

RegDriveDirect varchar(100),

RegTeam varchar(25)

);

GO

create table Tab_Bus

(BusID int identity(1,1) primary key not null,

BusLati float,

BusLongi float,

BusTime time,

Property varchar(25)

);

GO

Create table Tab_Admin

(AdmID int identity(1,1) primary key not null,

AdmName varchar(25) not null,

AdmPWD varchar(25) not null,

LoginIP varchar(25),

LoginLog varchar(100),

LogTime time

);

GO

Create table Tab_System

(SysID int identity(1,1) primary key not null,

LoginIP varchar(25),

SysTime time,

SysLog varchar(100),

IsAdmin int,

property varchar(25)

);

PL/SQL

/站点信息查询/

create procedure sp_Select_Sta

@staid int

as

begin

select *

from Tab_Station

where @staid=staid

end

GO

/站点信息插入/

create procedure sp_Insert_Sta

@staname varchar(25),

@stalati float,

@stalongi float

as

begin

insert into Tab_Station(staname,stalati,stalongi) values (@staname,@stalati,@stalongi)

end

GO

/车辆时刻信息查询/

create procedure sp_Select_RegBus

@regid int

as

begin

select *

from Tab_RegBus

where @regid=Regid

end

GO

/车辆时刻信息插入/

create procedure sp_Insert_Reg

@RegDocking varchar(25),

@RegDrivInterval varchar(50),

@RegPickUp varchar(25),

@RegFirstTime time,

@RegDriveDirect varchar(100),

@RegTeam varchar(25)

as

begin

insert into Tab_ReguBus(RegDocking,RegDrivInterval,RegPickUp,RegFirstTime,RegDriveDirect,RegTeam) values (@RegDocking,@RegDrivInterval,@RegPickUp,@RegFirstTime,@RegDriveDirect,@RegTeam)

end

GO

/车辆信息查询/

create procedure sp_Select_Bus

@busid int

as

begin

select *

from Tab_Bus

where @busid=busid

end

GO

/车辆信息插入/

create procedure sp_Insert_Bus

@BusID Int,

@BusLati Float,

@BusLongi Float,

@BusTime Time,

@Property Varchar(100)

as

begin

insert into Tab_Bus(BusLati,BusLongi,BusTime,Property) values (@BusLati,@BusLongi,@BusTime,@Property)

end

GO

/管理员信息查询/

create procedure sp_Select_Admin

@admid int

as

begin

select *

from Tab_Admin

where @admid=Admid

end

GO

/管理员信息插入/

create procedure sp_Insert_Admin

@AdmName Varchar(25),

@AdmPWD Varchar(25),

@LoginIP Varchar(25),

@LoginLog Varchar(100),

@LogTime time

as

begin

insert into Tab_Admin(AdmName,AdmPWD,LoginIP,LoginLog,LogTime) values (@AdmName,@AdmPWD,@LoginIP,@LoginLog,@LogTime)

end

GO

/系统信息查询/

create procedure sp_Select_Sys

@Sysid int

as

begin

select *

from Tab_System

where @sysid=sysid

end

GO

/系统信息插入/

create procedure sp_Insert_System

@LoginIP Varchar(25),

@SysTime Time,

@SysLog Varchar(100),

@IsAdmin Int,

@Property Varchar(25)

as

begin

insert into Tab_System(LoginIP,SysTime,SysLog,IsAdmin,Property) values (@LoginIP,@SysTime,@SysLog,@IsAdmin,@Property)

end

GO

4、 数据库基本操作

1) 数据库连接

import java .sql.*;

  public class sql {

   public static void main(String[] args) {

    try {

     String address = “jdbc:microsoft:sqlserver://localhost:1433”;

     //驱动类型+目标数据库ip+数据库端口

     String user=”sa”;//数据库用户密码

     String passwd=”“;//口令

     String database = “pubs”;//目标数据库

     Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance();//驱动申明

     Connection con = DriverManager.getConnection(address,user,passwd);//建立链接

     con.setCatalog(database);//确定目标数据库

     Statement smt =

  con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

     //建立描述,设定结果集支持滚动光标且敏感,不可编辑

     String selCode = “SELECT test1,test2 FROM test”;//查询语句

     ResultSet rs = smt.executeQuery(selCode);//结果集

     if(rs.last()) {//从第一条往后依次取结果集中的记录

      String userId = rs.getString(1);//等同rs.getString(“userId”),即第一个字段数据

      String userName = rs.getString(2);//同上,第二个字段,全部取其为String类型

      //若是中文字段,一般需要转码

      //userName = new String(userName.getBytes(“ISO-8859-1”),”gb2312”);

  System.out.println(userId+”:”+userName);//输出此条记录的查询结果

     }

     rs.close();//释放资源

     smt.close();

     con.close();

    }

    catch(Exception e) {

     System.out.println(e);//捕捉异常

    }

   }

  }

  

2) 执行SQL语句和存储过程

具体我想写一个操作基本数据库的包,请准备开发中间件组的同学是否可以给出所需基本函数?因为时间关系,我没考虑好具体写哪些操作过程,如果上面存储过程和数据库修改的话,我会给出新的数据库和存储过程。具体的基本数据库操作包还是需要的,大家先看看,然后给我答复。

5、 存在的问题

1) 上面的SQL语句直接执行,然后就可以建立一个基本的数据库了,然后执行PL/SQL就可以建立所有的存储过程了,执行存储过程是

Exec 存储过程名字 [参数],…..

2) 这样设计的数据库是空数据库,大家随便写一些信息就行了,至于如何使用google API,请参考:https://developers.google.com/maps/documentation/javascript/?hl=zh-CN

3) 数据库中的Property是说,有些数据是什么我还没想清楚,但是一定会拓展的。

4) 大家会发现数据库中没有约束性要求,是因为我们需要简单的测试,如果添加太多约束,会导致系统不稳定和提高开发的复杂性。

5) 代码的大小写没有关系,MS SQL大小写都可以,我只是按照我自己的写法写的大小写,如有个别差错,可以正常使用。

6) 代码我在MS SQL2008上测试过,可以使用!如果有问题,请及时联系我!