我想在mysql数据库中存储旅行细节。存储这些记录后,我想对这些记录执行某种搜索和排序操作。 喜欢:
....where from_city ='pune' OR from_pin ='411015' OR from_state ='MH' AND
to_city ='pune' OR to_pin ='411015' OR to_state ='MH' AND Ddeparting_date ='2015-08-06'...
但我很困惑,我只需将这些记录存储在一张桌子上( tbl_trip ),或者我是否需要增加一张桌子( tbl_trip_extra_info )以便我可以轻松执行搜索和排序操作。
我不想让我的数据库太沉重。
这种情况的最佳方法任何机构指导我?
tbl_trip
trip_id | from | to | pickup_points | departing_date |..3 more
1 | address from1 | **** | ------- | 2015-08-06 |..3 more
2 | address from2 | ***** | ----- | 2015-08-07 |..3 more
.
.
tbl_trip_extra_info
trip_id| from_city | from_state| from_pin| from_rout | to_city | to_state| to_pin | to_rout
1 | pune |MH | 411015 | alandi road | pune |MH | 411015 | alandi road
2 | mumbai |MH | 412006 | patil road | pune |MH | 411015 | alandi road
.
.
答案 0 :(得分:2)
你应该问自己的问题是:
这是一对一关系还是一对多关系?
如果您需要一个人和一次旅行,以便每个人不能有一次以上的旅程,那么这个关系就是一个,所以请在旅途中制作一张桌子和一列。
如果你需要这个人有更多的旅行,当然是一个人(人)到多人(旅行),所以你应该有一个人的桌子和一个旅行。
在旅行表中的那一点,您可以搜索人员ID或类似信息。
如果只是旅行和寻找旅行的问题,通常你只会使用一张桌子。您可以搜索旅行,一旦获得搜索结果,就可以按照自己的方式对其进行排序。
<强>加成强>
不要担心MySQL表的列限制,限制设置为4096列,所以你应该没问题。 (见here)
只需确保设置正确的索引,以便性能不会降低。