2010-06-08 7 views
2

나는 OpenLDAP를 데이터베이스를 가지고 있으며 예산의 속성이 있음을 볼 수 있습니다LDAP 스키마를 개선하는 방법은 무엇입니까?

dn: cn=Proj1,ou=Project,ou=ua,dc=org 
cn: Proj1 
objectClass: top 
objectClass: posixGroup 
member: 001ag 
member: 002ag 
System: ABEL 
System: PCx 
Budget: ABEL:1000000:0.3 
Budget: PCx:300000:0.3 

하나 같이 일부 프로젝트 개체를 보유 ":"- 첫 번째 부분은 시스템의 이름을 보관 유지하는 구분 된 문자열을, 예산은 두 번째 부분에 일부 예산 (매월 변경 될 수 있음)을 보유하고 마지막 항목은 해당 시스템의 예산에 대한 전환 요소입니다.

이것을 보면, 속성 값은 항상 원자 적이어야하기 때문에 이것은 나쁜 데이터베이스 디자인이라고 생각했습니다. 그러나 LDAP에서이를 향상 시켜서 직접 "ldapsearch"또는 "ABEL"시스템의 예산을 직접 ldapmodify 할 수 있습니다. 스크립트를 작성하는 대신 ":"로 구분 된 문자열을 구문 분석하고 분할해야합니까?

답변

2

개별적으로 구별 할 수있는 요소까지 내려갈 때까지 최대한 많은 것을 그룹으로 나누는 것이 좋습니다. 시스템의 경우 개별 요소로 구분할 수 있습니다. 당신이 깨달은 것처럼, 데이터베이스에 가장 작은 요소를 갖는 것이 Project가 하나 이상일 때 Project가 문제가됩니다.

나는 일명, 주요 프로젝트 그룹 내의 각 프로젝트의 하위 그룹을 둘 것 :

- ou=Project 
    + ou=proj1 
    + ou=proj2 
    + ou=proj3 

이러한 각각의 내부는 중 "회원"또는 "시스템"에 대한 객체를 가질 수 더 구별 가능한 속성. 예를 들어 "멤버"가 더 나은 선택이라고 가정합니다. 이 같은 개체가 할 각 하위 그룹 내에서,이 아이디어를 다음과 같습니다

- ou=Project 
    - ou=proj1 
     - dn: cn=sys1,ou=proj1,ou=Project,ou=ua,dc=org 
     cn: sys1 
     objectClass: top 
     objectClass: posixGroup 
     member: 001ag 
     System: ABEL 
     Budget: 1000000:0.3 

     - dn: cn=sys2,ou=proj1,ou=Project,ou=ua,dc=org 
     cn: sys2 
     objectClass: top 
     objectClass: posixGroup 
     member: 002ag 
     System: PCx 
     Budget: 300000:0.3 
    + proj2 
    + proj3 

것은 이제 각 시스템은 자신의 실체이지만,이 프로젝트는 여전히 전체로 함께 그룹화됩니다.

+0

+1 좋은 견해. =) –

+0

고마워! 누군가 항상 하하에게 동의하는 것을 잘 알고있다. –

+0

필자의 경우 "시스템"은 모든 시스템에 모든 구성원이 있어야하기 때문에보다 구별 가능한 속성이다. 하지만 당신이 의미하는 바를 얻었습니다. 그래서 cn = ABEL, ou = proj1, ou = Project, ou = ua, dc = org, cn = PCx, ou = proj2, ou = Project, = ua, dc = org. 답변 주셔서 감사합니다. – asmaier

관련 문제