如何在 MySQL table 列的一个字段中存储多个值?

How to store multiple values in one field of a MySQL table column?

我想为这些列的所有停靠点创建 table stops id, name,route, lat, long, arrivaltime 但我不知道如何管理它以获取停靠点中的路线列 table?因为一条路线有很多号码?

{
   "id": 1
   "stops_name": "Amersham ",
   "route": "8,4,7,34,45,8017, 57, 20,......... 30 entries"
   "arrival_time": {
                    "mon-fri": [ "05:38", "06:07","06:37",.....50 entries],
                    "sat": ["05:34","06:01","06:31",...........50 entries],
                    "son": ["06:02","06:34","07:04",...........50 entries]
                   },
    "stops_lat": 83.837994,
    "stops_long": 18.700423
 }



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

stt.execute("CREATE TABLE IF NOT EXISTS arrivaltimes(id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,"
        +  " weekday VARCHAR(20) NOT NULL,"
        + "arrivaltime time NOT NULL,"
        + " stop_id INT, FOREIGN KEY fk_stop_id(stop_id) REFERENCES stops(stop_id) )" );

据我了解,您想创建一个关系数据库结构。并且您想在站点和路线之间建立关系 table。

所以假设一个站点可以属于多条路线,一条路线可以有多个站点,即 table 之间的多对多关系。

比如你可以看这里 http://www.tutorialspoint.com/hibernate/hibernate_many_to_many_mapping.htm

如何在 Hibernate 中实现这个关系。

这样想。代表这个:

"route": "8,4,7,34,45,8017, 57, 20,......... 30 entries"

像这样:

"route": { "8"
         , "4"
         , "7"
         , "34"
         , "45"
         , ...
         }

考虑像这样在 table 中表示:

CREATE TABLE stop_route 
( id       INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
, stop_id  INT(11) NOT NULL COMMENT 'FK ref stop'
, route_id INT(11) NOT NULL COMMENT 'FK ref route'
, UNIQUE_KEY stop_route_UX1 (stop_id, route_id)
, CONSTRAINT FK_stop_route_stop (stop_id) REFERENCES stop(id)
, CONSTRAINT FK_stop_route_route (route_id) REFERENCES route(id)
}

如果 route 不是模型中的实体,则删除外键约束。


实体关系模型

我不知道你的实体关系模型。

但我怀疑 routestop 之间实际上存在 多对多 关系。为了解决这个问题,我们将引入一个新的 "relationship" table 外键指向 "stop" 和 "route".

而且我认为 arrival_time 不独立于路线。我要问的问题是,是否每个 route 在给定 stop 时都有相同的 50 arrival_time?或者,对于给定的 stop,每个 route 是否都有自己的一组 arrival_time。 (我认为是后者。)

  • a route 到达零,一个或多个 stop
  • a stop 由零个、一个或多个 route
  • 提供服务

我们通过引入关系来解决多对多table

route >--- route_stop ---< stop

(个人认为,在命名事物方面,我认为上面的route_stop关系table应该命名为"stop",而stop实体table 应该是 "location".

根据时间表,车辆在特定的 route 上行驶 "stop" 在特定的 "location" 上行驶,在(或接近)特定的 arrival_time 上行驶。 ) 但这只是命名法。只取决于你如何命名事物。

CREATE TABLE route_stop 
( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
, route_id INT NOT NULL COMMENT 'FK ref route' 
, stop_id INT NOT NULL COMMENT 'FK ref stop'
, UNIQUE KEY route_stop_UX1 (route_id, stop_id)
, CONSTRAINT FK_route_stop_route FOREIGN KEY (route_id) REFERENCES route(id)
, CONSTRAINT FK_route_stop_stop FOREIGN KEY (stop_id) REFERENCES stop(id)
)

CREATE TABLE arrival_time 
( id            INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY
, stop_route_id INT(11) NOT NULL COMMENT 'FK ref route_stop'
, weekday     VARCHAR(20) NOT NULL
, arrivaltime TIME NOT NULL
, CONSTRAINT FK_arrival_time_stop_route 
    FOREIGN KEY (route_stop_id) REFERENCES stop_route(id)
)