【问题标题】:Mysql columns limit. Using one table or create a new one?Mysql 列数限制。使用一张表还是创建一个新表?
【发布时间】:2015-11-01 09:53:51
【问题描述】:

我想在 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'...  

但我很困惑我是否必须将这些记录存储在仅 1 个表 (tbl_trip) 或是否必须制作 1 个额外表 (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
 .
 .

【问题讨论】:

    标签: php mysql json normalization


    【解决方案1】:

    你应该问自己的问题是:

    这是一对一关系还是一对多关系?

    如果你需要一个人和一次旅行,这样每个人不能有超过一次的旅行,那么关系就是一个,所以用旅行制作一张表格和一列。

    如果你需要这个人有更多的旅行,当然是一对多(人),所以你应该有一张桌子供人使用,一张桌子供旅行。

    此时,您可以在行程表中搜索人员 ID 或类似信息。

    如果只是旅行和搜索旅行的问题,通常您只会使用一张桌子。您可以搜索行程,一旦获得搜索结果,您就可以按照自己的方式对其进行排序。

    加法

    不要担心 MySQL 表的列限制,限制设置为 4096 列,所以你应该没问题。 (见here

    只要确保设置正确的索引,就不会降低性能。

    【讨论】:

    • 我只有一对一的关系,我只是担心没有列。是连接应该快速过滤或不连接只会增加同一张表中的额外列
    猜你喜欢
    • 2012-04-04
    • 2014-01-31
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多