从停靠表中定义路线

时间:2015-05-19 09:58:36

标签: mysql sql

我正在尝试从stops

定义路线
    CREATE TABLE IF NOT EXISTS stops
            (stop_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
             name varchar(30) NOT NULL, 
             lat double(10,6) NOT NULL, 
             longi double(10,6)NOT NULL) 



    CREATE TABLE IF NOT EXISTS arrivaltimes
            (arrivaltimes_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
            weekday VARCHAR(20) NOT NULL,
            route INT(11) NOT NULL, 
            arrivaltime time NOT NULL,
            stop_id INT, FOREIGN KEY fk_stop_id(stop_id) REFERENCES stops(stop_id) )

我会这样做:

CREATE TABLE IF NOT EXISTS routes
  (
        route_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
        route INT(11) NOT NULL

        )

并将此行添加到stops表:

route_id INT, FOREIGN KEY fk_route_id(route_id) REFERENCES routes(stop_id) 

这是一个可行的解决方案吗?我怎么能这样做?

我感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

首先定义routes表:

CREATE TABLE IF NOT EXISTS routes (
    route_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    route INT(11) NOT NULL
);

CREATE TABLE IF NOT EXISTS stops (
    stop_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    name varchar(30) NOT NULL, 
    lat double(10, 6) NOT NULL, 
    longi double(10, 6) NOT NULL
);

CREATE TABLE IF NOT EXISTS arrivaltimes (
    arrivaltimes_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    weekday VARCHAR(20) NOT NULL,
    route INT(11) NOT NULL, 
    arrivaltime time NOT NULL,
    stop_id INT,
    route_id int,
    FOREIGN KEY fk_stop_id(stop_id) REFERENCES stops(stop_id),
    FOREIGN KEY fk_route_id(route_id) REFERENCES routes(route_id)
    . . .
);

注意:arrivaltimes使用route_id,而非route。保持一致并始终使用主键进行外键引用。

您也可以使用alter table语句执行此操作,但按顺序定义表格更简单。