我正在为Cab / Taxi服务设计数据库。有一张出租车服务详情的表格。
* cab_services *
+---------------------+
| SID | Name |
|---------------------|
| S001 | ABC Taxi |
| S002 | XYZ Cabs |
| S003 | MN Taxi |
| S004 | OP Cabs |
|_______|_____________|
还有另一张地点表。
位置
+-----------------------------------+
| LID | Code | Location |
|----------------|------------------|
| L001 | CO | Akarawita |
| L002 | CO | Angamuwa |
| L003 | CO | Batawala |
| L004 | CO | Avissawella |
| L005 | CO | Battaramulla |
| L006 | GQ | Ambepussa |
| L007 | GQ | Bemmulla |
| L008 | GQ | Biyagama |
| L008 | GQ | Alawala |
| L010 | GQ | Andiambalama |
| L011 | GQ | Biyagama IPZ |
| L012 | KT | Bellana |
| L013 | KT | Bolossagama |
| L014 | KT | Bombuwala |
| L015 | KT | Alutgama |
| L016 | KT | Alubomulla |
|_______|________|__________________|
请注意,它们按地区分类。 ( CO , GQ , KT )每个地区都有多个城镇/城市。
出租车服务可能在多个地区提供服务。一个区可能有多个出租车服务。它有多种情况。
我正在尝试将cab_services表连接到locations表。但我无法弄清楚如何。 如果区内只有一项服务,我本可以这样做。
+-------+-------------+---------+
| SID | Name | Locs |
|-------+-------------+---------|
| S001 | ABC Taxi | CO |
|_______|_____________|_________|
但正如我之前所说,服务可以有很多地区。
+-------+-------------+---------+
| SID | Name | Locs |
|-------+-------------+---------|
| S001 | ABC Taxi | CO, KT |
|_______|_____________|_________|
这会违反1NF。
我希望能够在某种情况下获得结果,例如,如果用户使用位置名称进行搜索,他应该获得该区域的出租车服务。
我需要在数据库中进行哪些更改,表结构才能完成此任务?
如果有些内容令人困惑,请告诉我,我会尽力澄清。我很难解释事情。谢谢。
答案 0 :(得分:1)
连接表上有多个条目。
SID Name Locs
-----------------------
S001 ABC Taxi CO
S001 ABC Taxi KT
虽然您通过在表格中添加SID
和Name
来复制数据,但这仍然是1NF。
答案 1 :(得分:1)
您的连接表似乎只需要为cab_services表和位置表定义FK列(即,注意Oded关于重复的内容)。因此,例如,如果“ABC Taxi”在所有“CO”位置都可用,那么连接表将具有以下记录:
SID | LID
-----------
S001 | L001
S001 | L002
S001 | L003
S001 | L004
S001 | L005