为公司存储和选择多个州/城市的最佳方式?

时间:2009-08-06 14:10:43

标签: asp.net sql-server database-design logic

我有公司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. 允许用户在没有多页刷新的情况下选择此内容的最简单方法是什么?
  3. 我使用ASP.NET(Framework 3.5)和C#。如果周围有任何控件可以做到这一点,那么指向它们的指针也是最受欢迎的。

    谢谢,

    吉姆

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

2 个答案:

答案 0 :(得分:2)

您可能希望将其存储在四个表中

**Companies**
Name OtherInfo CompanyID

**States**
Name OtherInfo StateID

**Cities**
Name StateID CityID OtherInfo

**CompaniesInCities**
CompanyID CityID

这样,州和城市可以在没有公司的情况下存在。

对于选择它们的控件,如果要选择单个城市,AJAX CascadingDropDownList可能是最佳选择。

在没有多页刷新的情况下执行此操作,至少在我理解正确的情况下,这将非常困难,并且可能会让用户感到困惑。你最好的方法是让它们尽可能无痛,这可能涉及也可能不涉及使用AJAX。

答案 1 :(得分: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连接到城市,并拥有像美国这样的城市; fl; null和usa; ca; null代表该州内的所有城市。这种方式转换为基于特定城市的公司并不会真正改变您的整体方案。如果您知道您将始终与处理与州相关联的公司,那么在公司中执行state_id(如上所示)将是首选。

祝你的项目好运。