ylbtech-DatabaseDesgin:ylbtech-SubwayNav(地铁线路导航)-数据库设计

DatabaseName:SubwayNav(地铁线路导航)

Type:线路导航

1.A,数据库关系图(Database Diagram)
1.B,数据库设计脚本(Database Design Script)

1.B.1,SubwayNav.sql 第一版

-- =============================================
-- ylb:地铁线路导航系统
-- author:YUANBO
-- pubdate:22:02 2013/3/31
-- =============================================
USE master
GO -- Drop the database if it already exists
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'SubwayNav'
)
DROP DATABASE SubwayNav
GO CREATE DATABASE SubwayNav
GO
use SubwayNav go
-- =============================================
-- ylb:1,线路图
-- =============================================
create table Line
(
lineId int primary key,
lineName varchar(100)
)
go
-- =============================================
-- ylb:2,站点表
-- =============================================
create table Station
(
stationId int primary key identity(1,1),
stationName varchar(100),
lineId int,
flagTransfer bit default(0) --是否为换乘车站 1:是;0:不是
)
go
-- =============================================
-- ylb:3,换乘站点表
-- =============================================
create table TransferSite
(
stationId int,
lineId int,
lineId2 int
) go
-- =============================================
-- ylb:3,算法思想
-- 1,先判断站点(起始点|目的地)是否存在。
-- 2,(存在)返回站点所在的线路
-- 3,若在同一条线上,则计算俩站相隔的站数。
-- 3.2,不再同一条线路,则找两站的交集(即换乘站点,相同的站点),
-- 3.3,交集一个,则分别计算交集点到出发和目的的站数,并相加在一起。
-- ============================================= --插入测试数据
--insert into Line(lineId,lineName) values(,'')
insert into Line(lineId,lineName) values(1,'1号线')
insert into Line(lineId,lineName) values(5,'5号线')
insert into Line(lineId,lineName) values(10,'10号线') --向1号线 插入测试站点数据
--insert into Station(stationName,lineId) values('',)
insert into Station(stationName,lineId) values('苹果园',1)
insert into Station(stationName,lineId) values('王府井',1)
insert into Station(stationName,lineId,flagTransfer) values('东单',1,1)
insert into Station(stationName,lineId,flagTransfer) values('国贸',1,1)
insert into Station(stationName,lineId) values('四惠东',1) --向5号线 插入测试站点数据
--insert into Station(stationName,lineId) values('',)
insert into Station(stationName,lineId) values('天通苑北',5)
insert into Station(stationName,lineId) values('慧新西街南口',5)
insert into Station(stationName,lineId) values('东四',5)
insert into Station(stationName,lineId,flagTransfer) values('东单',5,1)
insert into Station(stationName,lineId) values('宋家庄',5) --向10号线 插入测试站点数据
--insert into Station(stationName,lineId) values('',)
insert into Station(stationName,lineId) values('巴沟',10)
insert into Station(stationName,lineId) values('北土城',10)
insert into Station(stationName,lineId,flagTransfer) values('慧新西街南口',10,1)
insert into Station(stationName,lineId,flagTransfer) values('国贸',10,1)
insert into Station(stationName,lineId) values('劲松',10) --insert into TransferSite(stationId,lineId,lineId2) values(,,)
--insert into TransferSite(stationId,lineId,lineId2) values(1,5,3)
--insert into TransferSite(stationId,lineId,lineId2) values(1,10,14)
--insert into TransferSite(stationId,lineId,lineId2) values(5,10,) select * from Station

1.B.2,SubwayNav.sql 第二版【On】

-- =============================================
-- ylb:地铁线路导航系统
-- author:YUANBO
-- pubdate:22:02 2013/3/31
-- =============================================
USE master
GO -- Drop the database if it already exists
IF EXISTS (
SELECT name
FROM sysdatabases
WHERE name = N'SubwayNav'
)
DROP DATABASE SubwayNav
GO CREATE DATABASE SubwayNav
GO
use SubwayNav go
-- =============================================
-- ylb:1,线路图
-- =============================================
create table Line
(
lineId int primary key,
lineName varchar(100)
)
go
-- =============================================
-- ylb:2,站点表
-- =============================================
create table Station
(
stationId int primary key identity(1,1),
stationName varchar(100),
flagTransfer int default(0) --是否为换乘车站 1:是;0:不是
)
go -- =============================================
-- ylb:3,换乘站点表
-- =============================================
create table TransferSite
(
stationId int,
lineId int
) go
-- =============================================
-- ylb:4,线路详细列表
-- =============================================
create table LineDetail
(
stationId int,
lineId int,
orderNum int --顺序大小,以顺时针开始的起始站点
)
--drop table LineDetail go
-- =============================================
-- ylb:3,算法思想
-- 1,先判断站点(起始点|目的地)是否存在。
-- 2,(存在)返回站点所在的线路
-- 3,若在同一条线上,则计算俩站相隔的站数。
-- 3.2,不再同一条线路,则找两站的交集(即换乘站点,相同的站点),
-- 3.3,交集一个,则分别计算交集点到出发和目的的站数,并相加在一起。
-- ============================================= --插入测试数据
--insert into Line(lineId,lineName) values(,'')
insert into Line(lineId,lineName) values(1,'1号线')
insert into Line(lineId,lineName) values(5,'5号线')
insert into Line(lineId,lineName) values(10,'10号线') --向1号线 插入测试站点数据
--insert into Station(stationName) values('',)
insert into Station(stationName) values('苹果园')
insert into Station(stationName) values('王府井')
insert into Station(stationName,flagTransfer) values('东单',1)
insert into Station(stationName,flagTransfer) values('国贸',1)
insert into Station(stationName) values('四惠东') --向5号线 插入测试站点数据
--insert into Station(stationName) values('',)
insert into Station(stationName) values('天通苑北')
insert into Station(stationName,flagTransfer) values('慧新西街南口',1)
insert into Station(stationName) values('东四')
--insert into Station(stationName,flagTransfer) values('东单',1)
insert into Station(stationName) values('宋家庄') --向10号线 插入测试站点数据
--insert into Station(stationName) values('',)
insert into Station(stationName) values('巴沟')
insert into Station(stationName) values('北土城')
insert into Station(stationName) values('劲松') --insert into TransferSite(stationId,lineId,lineId2) values(,)
--向1号线
insert into TransferSite(stationId,lineId) values(1,1)
insert into TransferSite(stationId,lineId) values(2,1)
insert into TransferSite(stationId,lineId) values(3,1)
insert into TransferSite(stationId,lineId) values(4,1)
insert into TransferSite(stationId,lineId) values(5,1) --向5号线
insert into TransferSite(stationId,lineId) values(6,5)
insert into TransferSite(stationId,lineId) values(7,5)
insert into TransferSite(stationId,lineId) values(8,5)
insert into TransferSite(stationId,lineId) values(3,5)
insert into TransferSite(stationId,lineId) values(9,5) --向10号线
insert into TransferSite(stationId,lineId) values(10,10)
insert into TransferSite(stationId,lineId) values(11,10)
insert into TransferSite(stationId,lineId) values(7,10)
insert into TransferSite(stationId,lineId) values(4,10)
insert into TransferSite(stationId,lineId) values(12,10)
select * from Station go
--insert into LineDetail(stationId,lineId,orderNum) values(,,)
--向1号线
insert into LineDetail(stationId,lineId,orderNum) values(1,1,1)
insert into LineDetail(stationId,lineId,orderNum) values(2,1,2)
insert into LineDetail(stationId,lineId,orderNum) values(3,1,3)
insert into LineDetail(stationId,lineId,orderNum) values(4,1,4)
insert into LineDetail(stationId,lineId,orderNum) values(5,1,5) --向5号线
insert into LineDetail(stationId,lineId,orderNum) values(6,5,1)
insert into LineDetail(stationId,lineId,orderNum) values(7,5,2)
insert into LineDetail(stationId,lineId,orderNum) values(8,5,3)
insert into LineDetail(stationId,lineId,orderNum) values(3,5,4)
insert into LineDetail(stationId,lineId,orderNum) values(9,5,5) --向10号线
insert into LineDetail(stationId,lineId,orderNum) values(10,10,1)
insert into LineDetail(stationId,lineId,orderNum) values(11,10,2)
insert into LineDetail(stationId,lineId,orderNum) values(7,10,3)
insert into LineDetail(stationId,lineId,orderNum) values(4,10,4)
insert into LineDetail(stationId,lineId,orderNum) values(12,10,5) select * from Station s inner join LineDetail ld on s.stationId=ld.stationId
where lineId=1 order by orderNum asc select * from Station where stationId not in(select stationId from LineDetail where lineId=0)

1.B.3,SubwayNav-Searching.sql

use SubwayNav
go
go
-- =============================================
-- ylb-search:1,起始点和目的地在同一条线上
-- =============================================
go
--1,判断站点是否存在
--苹果园--》东单
--1.1.1
select * from Station where stationName='苹果园'
--retrun station=1
--1.1.2
select * from Station where stationName='%苹果园%'
--retrun station=3 --1.2
--统计俩站点的站点数量(除去本站点)
select * from LineDetail where stationId=1 and lineId=1
--retrun orderNum=1
select * from LineDetail where stationId=3 and lineId=1
--retrun orderNum=3 select count(*)'amount' from LineDetail where orderNum>1 and orderNum<=3 and lineId=1 select * from LineDetail where lineId=1 select stationId,count(stationId) from LineDetail group by stationId having count(stationId)>1 select stationId,stationName,flagTransfer from Station
1.C,功能实现代码(Function Implementation Code)

http://files.cnblogs.com/ylbtech/WebForm-SubwayNav.rar

作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

ylbtech-SubwayNav(地铁线路导航)-数据库设计的更多相关文章

  1. ylbtech-Bill(发票管理)-数据库设计

    ylbtech-dbs:ylbtech-Bill(发票管理)-数据库设计 -- =============================================-- DatabaseName ...

  2. ylbtech-Recode(记录)-数据库设计

    ylbtech-dbs:ylbtech-Recode(记录)-数据库设计 -- =============================================-- DatabaseName ...

  3. web-3g-(163)网易-邮箱-记事本-数据库设计

    ylbtech-DatabaseDesgin:ylbtech-cnblogs(博客园)-数据库设计-2,Admin(用户后台) DatabaseName:cnblogs(博客园) Model:Admi ...

  4. web-ylbtech-数据库备份-数据库设计

    ylbtech-DatabaseDesgin:web-ylbtech-数据库备份-数据库设计 DatabaseName:ylbtech Model:备份 Type:数据库备份设计 Url: 1.A,数 ...

  5. ylbtech-QQ(腾讯)-群空间-数据库设计

    ylbtech-DatabaseDesgin:ylbtech-QQ(腾讯)-群空间-数据库设计 DatabaseName:QQ-群空间 Model:群相册.群共享.群论坛.群成员.留言板.公告.6个模 ...

  6. ylbtech-权限管理-数据库设计-功能权限管理技术

    ylbtech-DatabaseDesgin:ylbtech-权限管理-数据库设计-功能权限管理技术 DatabaseName:ylb_permission(权限管理-功能权限管理技术)实现 Type ...

  7. Microsoft-pubs(图书馆管理系统)-数据库设计

    ylbtech-DatabaseDesgin:微软提供-pubs(图书馆管理系统)-数据库设计   1.A,数据库关系图 1.B,数据库设计脚本 -- ======================== ...

  8. MVC基于角色权限控制--数据库设计

    在网站后台设计过程中都会遇上权限控制这一问题 当前较为流行的解决方案是基于角色的权限管理 基本思路如下 分别建立 用户信息表.角色信息表.权限信息表 让用户和角色关联,角色和权限关联,当用户访问时,通 ...

  9. ylbtech-memorandum(备忘录)-数据库设计

    ylbtech-DatabaseDesgin:ylbtech-memorandum(备忘录)-数据库设计 -- ============================================ ...

随机推荐

  1. hdu 1850 Being a Good Boy in Spring Festival 博弈论

    求可行的方案数!! 代码如下: #include<stdio.h> ]; int main(){ int n,m; while(scanf("%d",&n)&a ...

  2. 【转载】SSH框架总结(将网上朋友写的给整合了下)

    一.Struts 在没有学习SSH框架前,我们一般采用Jsp+javabean+servlet开发,这里就是MVC架构.而Struts其实就是替代了Servlet,我们知道Servlet在一般的开发中 ...

  3. lintcode :Reverse Words in a String 翻转字符串

    题目: 翻转字符串 给定一个字符串,逐个翻转字符串中的每个单词. 样例 给出s = "the sky is blue",返回"blue is sky the" ...

  4. 【mysql的编程专题①】流程控制与其他语法

    流程控制与内置函数,一般用在select的field字段上,或者用在函数,存储过程,触发器中; 如果用在select上就会随着query出来的row来隐式迭代; 注释与语句结束符 语句结束符 默认有两 ...

  5. linux内核--进程与线程

    http://blog.csdn.net/yusiguyuan/article/details/12154823 在<linux内核设计与实现>中第三章讲解了进程管理,在关于进程和线程的概 ...

  6. 利用纯真ip地址库 查询 ip所属地

    1. 首先下周数据源,选择是纯真数据库:http://www.cz88.net/ 2. 安装后,打开软件,将数据导出为txt格式. 3. 处理数据,参照网上的文章(http://www.jb51.ne ...

  7. Java Project和Web Project 区别

    java project是java工程,不包括JSP等前台页面的代码 大部分是CS结构的工程和一些jar包 web project是web工程,是BS结构的系统 web project部署到服务器上 ...

  8. 在PowerDesigner中设计物理模型3——视图、存储过程和函数

    原文:在PowerDesigner中设计物理模型3--视图.存储过程和函数 视图 在SQL Server中视图定义了一个SQL查询,一个查询中可以查询一个表也可以查询多个表,在PD中定义视图与在SQL ...

  9. MyEclipse 2013 开发WebService

    1.在Package Explorer窗口右键File新建WebService Project项目,我的名称为:TestWebService 2.WebService Framework选择JAX-W ...

  10. 传感器(2)常用api简介及列出当前设备支持的传感器代码

    Android SDK提供了Android sensor framework,可以用来访问当前Android设备内置的传感器. ASF提供了很多类和接口,可以帮助我们完成各种与传感器有关的任务. 例如 ...