2013-06-05 2 views
1

프로 시저 테이블을 작성 중이므로 '로그인 한 사용자'만 해당 프로 시저에 액세스 할 수 있도록 방법을 알아야합니다.데이터베이스 내부에 string [] 유형의 배열을 저장합니다.

내 초기 생각은 로그인 한 사용자가 Certified 열에 저장된 사용자 이름 중 하나 인 경우, 나는 단지 그 과정을 보여줄 수 있도록 'JohnD', 'JasonD', 'JaneD'. 같은 테이블 내에서 Certified 열에서이 정보를 저장하는 것입니다.

Active Directory에서 사용자를 수집하므로 사용자 테이블이 없습니다. 나는 그들의 사용자 이름과 성명 등을 쉽게 접근 할 수있다.

절차 표에는 많은 절차가 있으며 나의 KPI 표에는 각 절차에 대한 많은 KPI가있을 수있다. 그러나 나는 그가 인증 한 KPI를보기 위해 로그인 한 사람 만 원한다.

나는 좋은 방법으로이 일을 할 것인가?

답변

2

이것은 다 대다 관계입니다. 이것을 시도하십시오 :

 
Procedure table 
    procedure_id 
    ... other columns in the procedure table 

User Table 
    user_id 
    ... other columns in the user table 

User_to_Procedure table (this is the join table) 
    procedure_id 
    user_id 

user-can-access-procedure의 조합 당 user_to_procedure 테이블에 하나의 행을 넣으십시오.

사용자를 식별하는 다른 방법 (예 : 활성 디렉토리)이있는 경우 사용자 테이블은 선택 사항입니다. 활성 디렉토리의 경우 join 테이블의 user_id는 활성 디렉토리에서 가져온 식별자입니다.

여기는 join table에 대한 위키 백과 링크입니다. 위키 페이지는 그것을 접합 테이블로 참조하고 조인 테이블을 동의어로 나열합니다.

+0

사용자 테이블이 없게하는 방법이 있습니까? 활성 디렉토리에 액세스 할 때 users 테이블을 갖는 것이 지루한 것처럼 보입니다. 그런 다음 활성 디렉토리의 내용이 변경된 경우 사용자 테이블에 해당 변경 사항이 반영되어 있는지 확인해야합니다. 나는 이것이 어떻게 최선의 정규화 된 접근법인지 이해합니다. –

0

AD에서 사용자를 얻는 것만으로는 사용자 테이블을 가질 수 없거나 프로 시저 테이블에서 사용자에 대한 참조를 가질 수 없다는 것을 의미하지는 않습니다. 필요에 따라 레코드를 채울 수 있습니다. 즉, 사용자가 절차 관련 내용에 액세스해야 할 때 해당 사용자의 인증 여부를 확인한 다음 관련 레코드를 즉석에서 생성 할 수 있습니다.

관련 문제