2012-12-16

Vyhledávání spojů v jízdních řádech

Persistent tables

1.CREATE TABLE `mhd_jizdy` (
2.  `id` smallint(5) unsigned NOT NULL default '0',
3.  `nazev` varchar(140) NOT NULL,
4.  `id_trasa` smallint(5) unsigned NOT NULL default '0',
5.  PRIMARY KEY  (`id`),
6.  KEY `id_trasa` (`id_trasa`),
7.  CONSTRAINT `fk_jizdy_id_trasa` FOREIGN KEY (`id_trasa`) REFERENCES `mhd_trasy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
8.) ENGINE=InnoDB ROW_FORMAT=FIXED COMMENT='Jizdy - seskupení jednotlivých zastávek na dané trase pr';
01.CREATE TABLE `mhd_jizdy_stani` (
02.  `id_jizda` smallint(5) unsigned NOT NULL,
03.  `poradi` smallint(5) NOT NULL,
04.  `cas1` time default NULL,
05.  `cas2` time default NULL,
06.  `id_trasa_uzel` int(10) unsigned default NULL,
07.  PRIMARY KEY  USING BTREE (`id_jizda`,`poradi`),
08.  KEY `id_trasa_uzel` (`id_trasa_uzel`),
09.  CONSTRAINT `fk_jizdy_stani_id_jizda` FOREIGN KEY (`id_jizda`) REFERENCES `mhd_jizdy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
10.  CONSTRAINT `fk_jizdy_stani_id_uzel` FOREIGN KEY (`id_trasa_uzel`) REFERENCES `mhd_trasy_uzly` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
11.) ENGINE=InnoDB DEFAULT CHARSET=cp1250 ROW_FORMAT=FIXED COMMENT='Jednotlivé zastávky jízd';
1.CREATE TABLE `mhd_linky` (
2.  `id` smallint(5) unsigned NOT NULL auto_increment,
3.  `nazev` varchar(60) NOT NULL,
4.  `cislo` tinyint(3) unsigned default NULL,
5.  PRIMARY KEY  (`id`),
6.  KEY `cislo` (`cislo`)
7.) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=cp1250;
01.CREATE TABLE `mhd_trasy` (
02.  `id` smallint(5) unsigned NOT NULL auto_increment,
03.  `id_linka` smallint(5) unsigned default NULL,
04.  `popis` char(96) NOT NULL default '',
05.  `id_zast_prvni` int(10) unsigned NOT NULL,
06.  `id_zast_posledni` int(10) unsigned NOT NULL,
07.  PRIMARY KEY  (`id`),
08.  KEY `id_linka` (`id_linka`),
09.  CONSTRAINT `fk_trasy_id_linka` FOREIGN KEY (`id_linka`) REFERENCES `mhd_linky` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
10.) ENGINE=InnoDB AUTO_INCREMENT=158 DEFAULT CHARSET=cp1250 COMMENT='Jednotlive verze linek';
01.CREATE TABLE `mhd_trasy_uzly` (
02.  `id` int(10) unsigned NOT NULL auto_increment,
03.  `id_trasa` smallint(5) unsigned NOT NULL default '0',
04.  `poradi` smallint(5) NOT NULL default '0',
05.  `id_zast` smallint(5) unsigned NOT NULL default '0',
06.  PRIMARY KEY  (`id`),
07.  UNIQUE KEY `id_trasa_poradi` USING BTREE (`id_trasa`,`poradi`),
08.  KEY `id_zast` (`id_zast`),
09.  CONSTRAINT `fk_trasy_uzly_id_trasa` FOREIGN KEY (`id_trasa`) REFERENCES `mhd_trasy` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
10.  CONSTRAINT `fk_trasy_uzly_id_zast` FOREIGN KEY (`id_zast`) REFERENCES `mhd_zast` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
11.) ENGINE=InnoDB AUTO_INCREMENT=12555 DEFAULT CHARSET=cp1250 ROW_FORMAT=FIXED COMMENT='Trasy linek (pro kazdou verzi linky a pro kazdy smer)';
01.CREATE TABLE `mhd_zast` (
02.  `id` smallint(5) unsigned NOT NULL auto_increment,
03.  `nazev` varchar(60) NOT NULL default '',
04.  `nazev_plny` varchar(60) NOT NULL,
05.  `lat` double default NULL,
06.  `lon` double default NULL,
07.  `lat_norm` double default NULL,
08.  `lon_norm` double default NULL,
09.  `gps_loc` varchar(60) NOT NULL,
10.  `prezdivka` varchar(60) NOT NULL default '',
11.  `id_skup` smallint(5) unsigned default NULL,
12.  `obec` varchar(45) NOT NULL,
13.  `obec_cast` varchar(45) NOT NULL,
14.  `pozn` varchar(45) NOT NULL,
15.  `id_nn` int(10) unsigned default NULL,
16.  PRIMARY KEY  (`id`),
17.  KEY `id_skup` (`id_skup`),
18.  CONSTRAINT `fk_id_skup` FOREIGN KEY (`id_skup`) REFERENCES `mhd_zast_skup` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
19.) ENGINE=InnoDB AUTO_INCREMENT=540 DEFAULT CHARSET=cp1250 ROW_FORMAT=DYNAMIC COMMENT='Zastavky';

Procedures

mhd_VyhledejSpoje – searching the connection

Usage:

1.CALL mhd_VyhledejSpoje(115, 465, NOW(), 3);

Result:

01.CREATE DEFINER=`root`@`localhost` PROCEDURE `mhd_VyhledejSpoje`(
02.  idZastFrom INT UNSIGNED,
03.  idZastTo INT UNSIGNED,
04.  whn DATETIME,
05.  iMaxRounds TINYINT UNSIGNED
06.)
07.BEGIN
08. 
09.  /**
10.    Usage:
11.    CALL mhd_VyhledejSpoje(115, 465, NOW(), 3);
12.  */
13. 
14.-- snipped --
15. 
16. 
17.END $$

0