Лучший способ сохранить и выбрать несколько штатов / городов для компании? - PullRequest
0 голосов
/ 06 августа 2009

У меня есть компания 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 #. Если есть какие-либо элементы управления, которые могут это сделать, указатель на них также будет очень полезен.

Спасибо

Jim

Редактировать: Например, мне нужно выбрать «Компания А». Затем выберите «Состояние А». В разделе «Состояние A» я выбираю «Город A, B & C». Затем выберите «Штат B» и под ним выберите «Город A & B».

Ответы [ 2 ]

2 голосов
/ 06 августа 2009

Возможно, вы захотите сохранить это в четырех таблицах

**Companies**
Name OtherInfo CompanyID

**States**
Name OtherInfo StateID

**Cities**
Name StateID CityID OtherInfo

**CompaniesInCities**
CompanyID CityID

Таким образом, штаты и города могут существовать без компаний.

Что касается элемента управления для их выбора, если вы хотите выбрать один город, AJAX CascadingDropDownList может быть лучшим вариантом.

Выполнение этого без многократного обновления страницы, по крайней мере, если я вас правильно понимаю, будет чрезвычайно трудным и, вероятно, запутанным для пользователя. Лучше всего сделать их максимально безболезненными, что может включать или не включать использование AJAX.

0 голосов
/ 06 августа 2009

Чтобы ответить на ваш первый вопрос, я бы сохранил что-то вроде:

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; нуль и сша; ca; ноль, чтобы представлять все города в этом штате. Таким образом, преобразование в компании, основанные на определенном городе, на самом деле не меняет вашу общую схему. Если вы знаете, что вы всегда будете иметь дело с компаниями, связанными со штатами, то выполнение state_id в компаниях (как показано выше) было бы предпочтительным.

Удачи в вашем проекте.

...