2012-06-24 108 views
1

我正在設計出租車服務的數據庫。有一張出租車服務的詳細信息表。連接兩張表

* 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表與位置表。但我無法弄清楚如何。 如果只有一個服務在區域中,我會這樣做。

+-------+-------------+---------+ 
| SID |  Name | Locs | 
|-------+-------------+---------| 
| S001 | ABC Taxi | CO | 
|_______|_____________|_________| 

但就像我之前說過的,服務可以有很多地區。

+-------+-------------+---------+ 
| SID |  Name | Locs | 
|-------+-------------+---------| 
| S001 | ABC Taxi | CO, KT | 
|_______|_____________|_________| 

這會違反1NF。

我希望能夠像說的情況下得到結果,如果用戶使用位置名稱進行搜索,他應該獲得該地區的出租車服務。

我需要在我的數據庫中做什麼更改,表結構來完成這個任務?

請讓我知道如果有一部分是令人困惑的,我會盡我所能進一步澄清它。我在解釋事情方面很糟糕。謝謝。

+0

+1對於您的問題的出色而謹慎的表達。 – stakx

+0

我同意@stakx,但我寧願在ASCII文本/降價看到這些圖像。 – Oded

+0

謝謝@stakx和Oded。我編輯了這篇文章,並用ascii表格結構替換了圖片。 – Isuru

回答

1

看起來您的連接表只需要爲cab_services表和位置表定義FK列(即注意關於重複的Oded狀態)。因此,例如,如果「ABC出租車」在所有「CO」位置可用,那麼連接表將具有以下記錄:

SID | LID 
----------- 
S001 | L001 
S001 | L002 
S001 | L003 
S001 | L004 
S001 | L005 
+0

我做了一些關閉。我創建了2列的另一個表。參見[this](http://i.imgur.com/IzzME.png)圖片。並且使用[this](http://pastebin.com/rsywTuQ8)查詢我能夠得到理想的結果。謝謝。 – Isuru

+0

是的,它似乎很有效,假設一項服務將覆蓋某個特定地區的所有城鎮/城市,或者不包含該地區的所有城鎮。那麼這不是答案嗎?爲什麼不接受這個或Oded的迴應? – blins

+0

是的,這是唯一模糊的部分。但我現在可以忽略這一點。這不是一個商業應用,只是一個寵物項目。 :) – Isuru

1

您將在連接表上有多個條目。

SID Name   Locs 
----------------------- 
S001 ABC Taxi  CO 
S001 ABC Taxi  KT 

這仍然是1NF,雖然你是在爲表SIDName複製數據。

+0

首先謝謝你。我懂了。但其他一些表也取決於'cab_services'表。我保留'SID'作爲** PK **,這樣做會搞砸了。但是我做了這樣的事情。我創建了2列的另一個表。參見[this](http://i.imgur.com/IzzME.png)圖片。並且使用[this](http://pastebin.com/rsywTuQ8)查詢我能夠得到理想的結果。這是避免'cab_services'表中的重複記錄。請讓我知道我的修改是否存在缺陷。 – Isuru