如何在 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
不是模型中的实体,则删除外键约束。
实体关系模型
我不知道你的实体关系模型。
但我怀疑 route
和 stop
之间实际上存在 多对多 关系。为了解决这个问题,我们将引入一个新的 "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)
)
我想为这些列的所有停靠点创建 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
不是模型中的实体,则删除外键约束。
实体关系模型
我不知道你的实体关系模型。
但我怀疑 route
和 stop
之间实际上存在 多对多 关系。为了解决这个问题,我们将引入一个新的 "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)
)