ylbtech-SubwayNav(地铁线路导航)-数据库设计
| 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(地铁线路导航)-数据库设计的更多相关文章
- ylbtech-Bill(发票管理)-数据库设计
ylbtech-dbs:ylbtech-Bill(发票管理)-数据库设计 -- =============================================-- DatabaseName ...
- ylbtech-Recode(记录)-数据库设计
ylbtech-dbs:ylbtech-Recode(记录)-数据库设计 -- =============================================-- DatabaseName ...
- web-3g-(163)网易-邮箱-记事本-数据库设计
ylbtech-DatabaseDesgin:ylbtech-cnblogs(博客园)-数据库设计-2,Admin(用户后台) DatabaseName:cnblogs(博客园) Model:Admi ...
- web-ylbtech-数据库备份-数据库设计
ylbtech-DatabaseDesgin:web-ylbtech-数据库备份-数据库设计 DatabaseName:ylbtech Model:备份 Type:数据库备份设计 Url: 1.A,数 ...
- ylbtech-QQ(腾讯)-群空间-数据库设计
ylbtech-DatabaseDesgin:ylbtech-QQ(腾讯)-群空间-数据库设计 DatabaseName:QQ-群空间 Model:群相册.群共享.群论坛.群成员.留言板.公告.6个模 ...
- ylbtech-权限管理-数据库设计-功能权限管理技术
ylbtech-DatabaseDesgin:ylbtech-权限管理-数据库设计-功能权限管理技术 DatabaseName:ylb_permission(权限管理-功能权限管理技术)实现 Type ...
- Microsoft-pubs(图书馆管理系统)-数据库设计
ylbtech-DatabaseDesgin:微软提供-pubs(图书馆管理系统)-数据库设计 1.A,数据库关系图 1.B,数据库设计脚本 -- ======================== ...
- MVC基于角色权限控制--数据库设计
在网站后台设计过程中都会遇上权限控制这一问题 当前较为流行的解决方案是基于角色的权限管理 基本思路如下 分别建立 用户信息表.角色信息表.权限信息表 让用户和角色关联,角色和权限关联,当用户访问时,通 ...
- ylbtech-memorandum(备忘录)-数据库设计
ylbtech-DatabaseDesgin:ylbtech-memorandum(备忘录)-数据库设计 -- ============================================ ...
随机推荐
- CSS 的命名和书写
CSS书写顺序 1.位置属性(position, top, right, z-index, display, float等) 2.大小(width, height, padding, margin) ...
- git init 与 git init --bare 的区别
git init 和 git init –bare 的区别 使用命令"git init --bare"(bare汉语意思是:裸,裸的)初始化的版本库(暂且称为bare repos ...
- 用supervisor控制celery时的脚本
注意启停的先后顺序及判断即可. 这样,在更改task之后,要重启就方便很多啦.. #!/bin/sh supervisord_count=`ps -elf | grep celery | grep - ...
- 安装SQL Server 2012遇到“需要更新的以前的Visual Studio 2010实例.”
Microsoft Visual Studio 2010 Service Pack 1(exe) 下载链接:http://www.microsoft.com/zh-cn/download/confir ...
- SqlDBHelper常用方法
/*============================================================= *.net连接数据库常用方法 *Author : dongny,Li * ...
- C++中全局变量的那些事儿
C/C++中的变量分为全局变量.静态全局变量.局部变量和静态局部变量,在<C/C++中静态局部变量的特点与应用>中我们介绍过静态局部变量,今天我们的目标是全局变量. 单个文件中的全局变量 ...
- AE CreateFeatureClass 创建shp. 删除shp. 向shp中添加要素
/// <summary> /// 创建多边形shp /// </summary> /// <param name="pPolygon">< ...
- NSDictionary 初始化
NSDictionary *dic1=[NSDictionary dictionaryWithObject:@"1" forKey:@"a"]; ...
- 2008年我买了一本书 书名叫“PHP 6”
上个星期天,我感觉应该整理一下我的书柜.于是,在书柜里,我发现了一本几乎完全忘记的书(我想不起来为什么要买它!):<PHP 6 – 快速简洁的Web开发> 这本书出版于2008年一月.而六 ...
- HTML 中的meta标签中的http-equiv与name属性使用介绍
meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言, ...
