2010-08-09 3 views
1

나는이 디자인 문제로 힘든 시간을 보내고 있으며 어떤 통찰력에 감사 드릴 것입니다.데이터 디자인 토론

저는 의사 사무실에 특정 권한이 있지만 현재는 5 가지 권한 만 있지만 더 추가 할 수 있습니다. 이 권한들 각각은 예 또는 아니오의 상태를 갖지만 장래에 더 세분화 된 상태가있을 수 있으며이 권한들 각각은 위치 (어, 입원 환자, 외래 환자)와 관련되어 있으며 앞으로도 확장 될 수 있습니다.

그래서 현재 OfficePrivileges, PrivilegeLocation, PrivilegeType, PrivilegeStatus 테이블이 있습니다.

OfficePrivilege는 PrivilegeLocation과 DoctorOffice 간의 조인 테이블입니다. 그것은 OfficeID와 PrivilegeLocationID의 이중 기본 키를 가지고 있습니다.

한 번에 OfficePrivileges 테이블에 형식 및 상태가 조인되어 형식 테이블이 위치 및 상태의 자식이되도록 전환되었습니다. 이들은 모두 단일 기본 키 테이블입니다.

이 테이블 세트를 설계한다면 어떻게 할 수 있습니까? 나는 이것이 거의 계층 구조 문제라고 생각하고있다. 나는 그것을 싫어한다. 크로스 스크린 테이블로 편집 화면을 배치하고 상단에 위치가 있고 측면과 세부 정보가 상태 인 것을 입력하십시오. 즉

편집 .... 그것이 내가에 통합하기 위해 노력하고 시스템의 현재,하지만 코볼 백엔드과 더 나은 관계 데시벨 이상의 계층 구조를 처리하는 방법입니다 :

: 혼란을 정리하는 데 도움 나의보기를 위해 특권 인정, 참석 특전, 상담 특권 및 수술 특권이 있습니다. 그 위치는 입원 환자, 응급실, 외래 환자 및 수술/수술입니다. 현재 상태는 예 또는 아니오입니다. 그러나 그들은 고객의 필요에 따라 미래에 바뀔 수 있습니다.

이 정보는 내 데이터베이스의 테이블에 저장됩니다.

+1

당신이 찾을 수있는 액세스 제어를 모두 위치의 X에 입원 권한이와 Y 수 있지만

그래서, 예를 들어, 의사는 입원 환자 위치 X에서 권한하지만, 위치 Y에서만 DX 이미징 권한을 가질 수 관심 목록 (ACL). – NullUserException

+0

권한은 실제로 어떻게 작동합니까? 그것 모두 또는 아무것도 아닌가요?일부 사용자는 읽기 전용 액세스 권한을 가져야합니까? 편집 할 수는 있지만 삭제할 수는 없습니까? – scunliffe

+0

@scunliffe : 저는 그가 병원 특권에 대해 이야기하고 있다고 생각합니다. 의료계에서 의사가 특정 병원으로 환자를 보낼 수 있으면 의사는 해당 병원에서 "특권"을가집니다. – AllenG

답변

0

"가능한"변경 사항을 알고 있기 때문에 가능한 한 유연하게하려고 생각하지만 실제로는 그 코드에 아직 코딩하고 싶지 않습니다.

는 당신이있어 무엇을 같은

뭔가 정말 아마 꽤 좋은 : 나는이 길을 갈 것입니다 : 당신이 실제로 사무실, PrivilegeLocations 사이의 3 자 관계를해야하고, PrivilegeTypes

나는 당신의 OfficePrivaleges 말할 것

테이블에는 다음과 같은 6 개의 열이 있어야합니다. Id (its own PK), OfficeId, LocationId, PTypeId, StartDate, EndDate Office에 대해 새로운 권한이 부여되면이 테이블을 연결하는이 테이블에 레코드를 추가하고 사무실에 StartDate의 권한이있는 첫 번째 날짜를 추가합니다. 권한이 해지 된 경우 해당 날짜를 EndDate에 추가하십시오. 갱신 된 경우 새 행을 추가하거나 StartDate을 재설정하십시오.

PrivilegeType을 PrivilegeLocation의 하위로 만들지 마십시오. 모든 위치를 n 번 (n = 다른 권한 조합)으로 저장해야하기 때문입니다. 이렇게하면 사무실, 위치 및 유형을 한 번만 저장하면됩니다. 의사 B는

+0

그래서 나는 나의 가장 좋은 것 처음에가는 길 ... 내가 차 OfficeId 및 LocationId의 이중 키를 만들 수 OfficePrivileges OfficeId LocationId PTypeId StatusId (대신 STARTDATE 종료 날짜의) ? 그런 식으로 각 사무실은 하나의 위치 만 허용 될 것입니다 ... 물론 내 코드에서도 그렇게 할 수 있습니다. – ecathell

+0

@ecathell 당신은 그렇게 할 수 있습니다 (또는 제약 조건을 설정하거나 여러 가지를 설정할 수 있습니다). 하지만 정확합니까? 예를 들어, 내 의사는 최소한 2 개 (그리고 제 생각에는 3 개)의 지역 병원에서 특권을 인정했습니다. – AllenG

+0

이것은 하나의 병원 시스템에만 해당됩니다. 이 응용 프로그램은 특히 단일 병원을 대상으로합니다. 병원이 아닌 의사를 위해 준비된 ... heh ... 나는 중복되어있다. :) – ecathell