2010-08-16 5 views
0

개발중인 응용 프로그램은 각 클라이언트에 대해 정의 된 도시 목록을 기반으로 데이터에 대한 액세스를 제공해야합니다. 클라이언트는 할 수 있습니다 : 국가의 모든 도시에데이터베이스 디자인 : 액세스 제어 정의

  • 액세스 또는 국가/지역의 모든 도시에
  • 액세스 또는
  • 접근을 어떤 상태 국가에서 도시를 선택합니다.

것은 무엇 데이터베이스에이를 정의하는 가장 좋은 방법이 될 것입니다 (DB를이 나라 테이블, /지역 테이블, 도시 테이블과 클라이언트 테이블이있는 경우)?

명확화 : (이 질문과 관련된 필수 열만있는 단순한보기).

국가 테이블 -

idCountry |

주 테이블 이름 -

idState을 | idCountry |

시 테이블 이름 -

idCity을 | idState |

클라이언트 테이블 이름 -

idClient을 | 이름

답변

0

당신은 Location 자기 관련 테이블 (ID, 이름, ParentLocation)와 AccessControl 테이블 (클라이언트 ID, LocationId)을 만들 수 있습니다. 클라이언트가 위치와 관련이 있으면 그 아래의 모든 위치에 대한 액세스 권한을 부여 할 수 있습니다. 몇 가지 예 :

ID Name  Parent 
------------------- 
1 World  NULL -- Need to represent all countries 
2 Brazil 1  -- A country 
3 São Paulo 2  -- A state 
4 São Paulo 3  -- A city 

당신이 당신의 현재 모델처럼 어쩌면 테이블도 설치하려면 (클라이언트 ID, CountryId 널 (NULL), StateId 널 (NULL), CityId 널 (NULL)). 이렇게하면 보안 액세스를 정의로 정의 할 수 있지만 null 허용 필드를 처리해야합니다.

+0

데이터베이스 디자인이 표준화되어 있고 위치 테이블 방법이이를 무효화하는 것이 좋을 것 같습니다. 두 번째 방법에 대해서 - 저도 첫 번째 생각이었습니다 -하지만 아마도 더 좋은 해결책이 있을까요? (감사.) – Mysti