2009-08-06 85 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. 允许用户在没有多次页面刷新的情况下选择这个最简单的方法是什么?

我使用ASP.NET(Framework 3.5)与C#。如果有任何控制可以做到这一点,一个指向他们的指针将会非常感谢。

感谢,

吉姆

编辑:例如,我需要选择 “A公司”。然后选择“状态A”。在“国家A”下,我选择“城市A,B & C”。然后选择“国家B”,然后选择“城市A & B”。

回答

2

你可能会想这些信息存储在四个表

 
**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”。我不确定您建议的数据库结构是否可以帮助您... – Jim 2009-08-06 14:21:06

+0

数据库结构应该可以工作,但您对CascadingDropDown是正确的。这听起来像你想要一个CascadingDropDown,直到你到达城市部分,你想要一个CheckBoxList。这不应该是手动编码的难题。 – 2009-08-06 14:23:19

+0

请注意公司链接到城市的重要一点,城市链接到一个州。不要将公司连接到城市和州,否则会造成数据不一致的可能性,例如城市“迈阿密,佛罗里达州”和州“GA”。 (如果这点显而易见,太棒了!但是如果是这样的话,那么你在设计吸引人的数据库的人们前几英里,我必须每天工作......) – Jay 2009-08-06 16:31:56

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(如上所示)将是可取的。

祝您的项目顺利。

相关问题