gpt4 book ai didi

mysql - 是否可以规范化表,以便它可以在一行中包含一个值?

转载 作者:行者123 更新时间:2023-11-29 22:21:13 25 4
gpt4 key购买 nike

我有一个包含三列 BusNo、BusRoute 和 BusStop 的表,其中 BusStop 列包含多个逗号分隔值。我想对其进行标准化,以便该表在一行中包含一站。例如。

BusNo  BusRoute                BusStop  
1 Rajendra Nagar to Noida Apsara,Shahadara,Shakarpur,Mother Dairy

我想在多行中停靠,这是一个好方法吗?我这里有超过 1000 个公交车号。

最佳答案

我的建议是创建两个新表:BusStopsBusRouteBusStops

BusStops 每个公交车站都有一条线路,至少包含两列:StopNumberStopNameBusRouteBusStops 将是链接 BusRoute 表与 BusStops 表的表。该表中的每一行都有一个来自 BusRoutesBusStops 的主键。

这个想法是将公交车站保留在表中,无论是否使用以及在何处使用。这样您就可以在任意多条 route 使用一个站点。此外,如果您决定从所有 route 删除某个站点,该站点仍会保留并可供新路线使用。如果您想表示 route 公交车站的顺序,可以将其作为列添加到 BusRouteBusStops 表中。

表格示例:

Table BusRoutes - primary-Key(BusNo)
===============
BusNo | BusRoute
1 | Rajendra Nagar to Noida

Table BusStops - primary-Key(StopNumber)
===============
StopNumber | StopName
1 | Apsara
2 | Shahadara
3 | Shakarpur
4 | Other Stop
5 | Mother Dairy

Table BusRouteBusStops - primary-Key(BusNo+StopNumber)
===============
BusNo | StopNumber | stpoOrder
1 | 1 | 1
1 | 2 | 2
1 | 3 | 3
1 | 5 | 4

使用 MySql 语法获取经过给定站点(例如:Apsara)的所有公交车号码的查询将是:

SELECT BR.* 
FROM BusRoutes BR, BusStops BS, BusRouteBusStops BRBS
WHERE BR.BusNo=BRBS.BusNo
AND BS.StopNumber=BRBS.StopNumber
AND BS.StopName="Apsara"

关于mysql - 是否可以规范化表,以便它可以在一行中包含一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com