天天看點

校車定位服務系統資料庫初步設計

資料庫和接口設計

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上測試過,可以使用!如果有問題,請及時聯系我!