2009-08-06 9 views
0

私はA社を持っています。私はこの会社を複数の州にリンクする必要があり、それぞれの州は複数の都市にリンクすることができます。たとえば:会社の複数の州/都市を保存して選択する最も良い方法は?

Company A 
     \ 
      - State A 
        |-City A 
        |-City B 
     \  |-City C 
      - State B 
        |-City A 
        |-City B 
     \  |-City C 
      - State C 
        |-City A 
        |-City B 
        |-City C 

は私の質問は以下のとおりです。

  1. テーブルでこれを保管するための最良の方法は何ですか?
  2. ユーザーが複数ページの更新を行わずにこれを選択できる最も簡単な方法は何ですか?

私はC#でASP.NET(フレームワーク3.5)を使用しています。もしこれを行うことができるコントロールがあれば、それらへのポインタも非常に高く評価されます。

おかげで、

ジム

編集:たとえばは、私が "A社" を選択する必要があります。次に、「状態A」を選択します。 「州A」では、「City A、B & C」を選択します。次に "州B"を選択し、その下に "City A & B"を選択します。

答えて

2

はおそらく、4つのテーブル

 
**Companies** 
Name OtherInfo CompanyID 

**States** 
Name OtherInfo StateID 

**Cities** 
Name StateID CityID OtherInfo 

**CompaniesInCities** 
CompanyID CityID 

、州や都市は企業ずに存在することができるこの方法でこれを保管することになるでしょう。

都市を選択する場合は、AJAX CascadingDropDownListが最適です。

複数のページをリフレッシュせずにこれを行うと、少なくとも私があなたを正しく理解していれば、ユーザーにとって非常に難しく、おそらく混乱します。あなたのベストショットは、AJAXを使用するかどうかを問わず、可能な限り痛みのないものにすることです。あなたの最初の質問に答えるために

+0

CascadingDropDownListは複数の選択を許可しません。たとえば、「会社A」を選択する必要があります。次に、「状態A」を選択します。 「国家A」では、「都市A、B&C」を選択します。次に "州B"を選択し、その下で "都市A&B"を選択します。あなたが提案したDB構造がこれに役立つかどうか分かりません。 – Jim

+0

DB構造はうまくいくはずですが、あなたはCascadingDropDownについて正しいです。 CheckBoxListが必要なCitiesの部分に到達するまで、CascadingDropDownが必要なように思えます。これは手動でコード化するのは難しいことではありません。 –

+0

会社が都市にリンクし、都市は州にリンクするという重要な点に注意してください。都市や州に会社をリンクさせないでください。そうしないと、データが矛盾する可能性があります。都市 "マイアミ、フロリダ州"と州 "GA"。 (その点があなたに明白な印象を与えたら、素晴らしい!しかしもしそうなら、私は毎日仕事をしなければならない厄介なデータベースを設計した人より数マイル先にいます...) – Jay

0

、私はそれを保存すると何かのように:あなたがやって検討するかもしれない

 
STATE 
---------------------------- 
STATE_KEY      NOT NULL NUMBER                                               
COUNTRY      NOT NULL VARCHAR2(3) (ISO 3-letter code)                                            
STATE_SHORT     NOT NULL VARCHAR2(30)                                             
STATE_NAME      NOT NULL VARCHAR2(30) 


CITY 
---------------------------- 
CITY_KEY      NOT NULL NUMBER                                               
STATE       NOT NULL NUMBER (FK into STATE)                                       
CITY_NAME      NOT NULL VARCHAR2(30)                                             
LAT          NUMBER                                               
LOG          NUMBER 

COMPANIES 
---------------------------- 
STATE_ID NUMBER NOT NULL  (FK into State) 
.... Other Data Cols..... 


一つのことではなく、都市に都市のキーとFKに企業をリンクする、などの都市を持っていることですusa; fl; nullおよびusa; ca; nullは、その州のすべての都市を表します。特定の都市に基づいて企業に変換するこの方法は、実際にはあなたの全体的な計画を変更しません。あなたが常に州に関連する企業を扱うことがわかっている場合、(上記のように)企業でstate_idを実行する方が優先されます。

あなたのプロジェクトには幸運です。

関連する問題