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. span标签里的内容在IE下显示,而在谷歌浏览器下不显示

    有如下代码: <span id="spLicenseIncrease" style="color:red;">(51)</span> 在 ...

  2. mysql外键级联更新删除

    MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作 ...

  3. IPC$命令详解

    一 摘要二 什么是ipc$三 什么是空会话四 空会话可以做什么五 ipc$所使用的端口六 ipc管道在hack攻击中的意义七 ipc$连接失败的常见原因八 复制文件失败的原因九 关于at命令和xp对i ...

  4. 极客编程必备的五大PHP开发应用

    有了PHP应用可以帮助编码爱好者事半功倍,提升项目质量:有了这些最新的且灵活的PHP应用使创建编码项目更加简单.便捷.本文,我们收集了五大最新的PHP开发应用. PHP应用在网络上并不多见.最重要的是 ...

  5. option配置

    wildignore:用来设置忽略的文件匹配模式,shell模式

  6. Android查询:模拟键盘鼠标事件(adb shell 实现)

    1. 发送键盘事件: 命令格式1:adb shell input keyevent “value” 其中value以及对应的key code如下表所列: KeyEvent Value KEYCODE ...

  7. 函数mem_area_alloc

    /********************************************************************//** Allocates memory from a po ...

  8. UVa 1401 (Tire树) Remember the Word

    d(i)表示从i开始的后缀即S[i, L-1]的分解方法数,字符串为S[0, L-1] 则有d(i) = sum{ d(i+len(x)) | 单词x是S[i, L-1]的前缀 } 递推边界为d(L) ...

  9. JavaScript闭包示例

    在下面的例子中,为什么点击所有的段落p输出都是5,而不是alert出对应的0,1,2,3,4. <html> <head> <meta charset="utf ...

  10. asp.net获取文件夹下的所有文件

    using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System. ...