2010-06-08 7 views
2

J'ai une base de données OpenLDAP et détient quelques objets du projet qui ressemblentComment améliorer mon schéma 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 

On peut voir que l'attribut budget est un « : » - chaîne séparée, où la première partie contient le nom du système, le budget est pour, la deuxième partie contient un budget (qui peut changer chaque mois) et la dernière entrée est un facteur de conversion pour le budget de ce système. Voyant cela, j'ai pensé que c'est une mauvaise conception de base de données, puisque les valeurs d'attributs devraient toujours être atomiques. Mais comment puis-je améliorer cela dans LDAP, pour que je puisse faire un ldapsearch direct ou un ldapmodify direct du budget du système "ABEL" au lieu d'écrire un script, qui devra analyser et scinder la chaîne ":" - séparée?

Répondre

2

C'est une bonne idée de diviser les choses en groupes autant que vous le pouvez jusqu'à ce que vous tombiez à des éléments distinctifs, ce qui dans votre cas serait des systèmes. Comme vous l'avez compris, avoir le plus petit élément dans la base de données soit un problème lorsque vous avez plus d'un système.

Je mettrais un sous-groupe pour chaque projet à l'intérieur du principal groupe de projet, alias:

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

l'intérieur de chacun d'entre eux, vous pouvez avoir un objet pour « membre » ou « système », selon la attribut plus distinguable. Pour un exemple, je suppose que "membre" est le meilleur choix. Suite à cette idée, à l'intérieur de chaque sous-groupe que vous auriez des objets comme celui-ci:

- 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 

Maintenant, chaque système est sa propre entité, mais le projet est encore regroupées dans son ensemble.

+0

+1 Bon point de vue. =) –

+0

Merci! Toujours bon de savoir que quelqu'un est d'accord haha ​​ –

+0

Pour mon cas, "Système" est l'attribut le plus distinctif, puisque chaque système est censé avoir tous les membres. Mais je pense que je comprends ce que vous voulez dire et donc j'utiliserai des sous-groupes avec cn = ABEL, ou = proj1, ou = Projet, ou = ua, dc = org, cn = pcx, ou = proj2, ou = projet, ou = ua, dc = org. Merci pour votre réponse. – asmaier

Questions connexes