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     |
|_______|________|__________________|

地区ごとに分類されていることに注意してください。( COGQKT ) 各地区には複数の町/市があります。

タクシー サービスは、複数の地区でサービスを提供している場合があります。また、1 つの地区に複数のタクシー サービスがある場合もあります。一種の多対多のシナリオです。

cab_services テーブルを location テーブルに接続しようとしています。しかし、方法がわかりません。地区にサービスが 1 つしかない場合、私はこのようなことをしたでしょう。

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

しかし、前に述べたように、サービスには多くの地区を含めることができます。

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

これは 1NF に違反します。

たとえば、ユーザーが場所の名前を使用して検索した場合、その地域のタクシー サービスを取得する必要があるなどの状況で結果を取得できるようにしたいと考えています。

これを達成するには、データベース、テーブル構造にどのような変更を加える必要がありますか?

わかりにくい部分がある場合はお知らせください。さらに明確にするために最善を尽くします。私は物事を説明するのがかなり苦手です。ありがとうございました。

4

2 に答える 2

1

接続テーブルは、cab_servicesテーブルとlocationsテーブルのFK列を定義するだけでよいようです(つまり、Odedが複製について述べていることに注意してください)。したがって、たとえば、「ABCタクシー」がすべての「CO」の場所で利用できる場合、接続テーブルには次のレコードが含まれます。

 SID | LID
-----------
S001 | L001
S001 | L002
S001 | L003
S001 | L004
S001 | L005
于 2012-06-24T19:45:43.100 に答える
1

接続テーブルには複数のエントリがあります。

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

これはまだ 1NF にありますが、テーブルにSIDandNameを使用してデータを複製しています。

于 2012-06-24T19:29:50.133 に答える