Jointures SQL pour limiter accès

Jointures SQL pour limiter accès - SQL/NoSQL - Programmation

Marsh Posté le 04-03-2008 à 08:24:15    

Bonjour à tous,  
je suis actuellement en train de "développer" une application ayant pour but de permettre à un "administrateur de famille" de créer des nouveaux utilisateurs et ainsi leur attribuer leurs droits je m'explique : ces droits porteront sur la caméra IP ainsi qu'un disque dur IP, par exemple l'administrateur créer user 1 et dit il aura accès à la cam mais pas au dd, l'utilisateur 2 aura accès au dd mais pas à la cam, ... j'ai réalisé un MCD et ma base de données est donc constituées de 4 tables (administrateur, user, matériel, droit) donc si vous pouvez m'aider à réaliser ce système de droit, j'ai cru comprendre que les jointures SQL étaient la bonne solution mais je ne sais pas trop comment adapter les jointures SQL à mon problème.
 
Merci d'avance !

Reply

Marsh Posté le 04-03-2008 à 08:24:15   

Reply

Marsh Posté le 04-03-2008 à 11:50:37    

Elle est où la question, là?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-03-2008 à 14:03:09    

comment faire pour limiter l'accès avec des jointures SQL en sachant que mes tables ressemblent à ça :
ADMIN : idADMIN (clé primaire), Nom, Prenom, Mail, mdp
USER : idUSER (clé primaire), id ADMIN(clé étrangère), Nom, Prenom, Mail, mdp
MATERIEL : idMAT (clé primaire), id ADMIN(clé étrangère),Lien
DROIT (=relation USER et MATERIEL) : idUSER et idMAT (clés étrangères)

Reply

Marsh Posté le 04-03-2008 à 14:05:44    

Limiter les accès avec des jointures SQL ça veut pas dire grand chose...
Tu vas utiliser des jointures pour récupérer les droits d'un utilisateur, mais c'est tout...et ces jointures sont implicitement déjà apparentes par tes clés étrangères.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-03-2008 à 15:51:48    

oui mais en fait je ne sais pas très bien comment créer ces clés étrangères j'ai pourtant essayé beaucoup de choses FOREIGN KEY etc ... mais ça ne marché pas alors peut être qu'il faudrait les définir à la création de la table dans une requête sql donc si quelqu'un peut m'aider pour le donner une requête pour créer les tables que je souhaite

Reply

Marsh Posté le 04-03-2008 à 15:53:22    

Qu'est-ce que tu as fait pour l'isntant? Et avec quel sgbd? On manque d'info pour t'aider...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-03-2008 à 17:12:21    

j'ai juste créer mes tables avec phpMyAdmin en définissant mest clés primaires mais pas les clés étrangères

Reply

Marsh Posté le 04-03-2008 à 17:12:57    

Ben rajoute les clés étrangères.[:dawa] L'interface devrait permettre ça.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-03-2008 à 17:28:17    

Sans vouloir critiquer gratuitement (c'est pas mon genre  :D ), je ne comprends rien à la représentation que tu fais de ton problème....
Je pense que tu poses mal ton problème et que ton modèle n'est pas correct...
SI tu veux faire de l'administration de droits, qqch comme ca serait plus logique
GROUPE : idGROUPE (clé primaire), idADMIN (qui est juste l'idUSER de l'admin), NomGROUPE
USER : idUSER (clé primaire), idGROUPE(clé étrangère), Nom, Prenom, Mail, mdp
MATERIEL : idMAT (clé primaire), Lien (j'ai enlevé idADMIN car je ne vois aps ce qu'il vient faire)
DROIT (=relation USER et MATERIEL) : idUSER et idMAT (clés étrangères)
 
Toutes les notions de clés primaires, étrangères, .... c'est bien, mais ce n'est pas ca qui vas créer ton SQL et qui va faire tes jointures... Il va boen falloir que tu utilises des INNER JOIN ou LEFT JOIN ou RIGHT JOIN ....
 
=> Que veux-tu obtenir à la fin en terme de résultats de requêtes ?


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 05-03-2008 à 08:08:56    

non skeye l'interface de phpMyAdmin ne permet pas de rajouter des clés étrangères et  quand à babass c gentil mais ton MCD ne permet de réaliser ce que je désire.

Reply

Marsh Posté le 05-03-2008 à 08:08:56   

Reply

Marsh Posté le 05-03-2008 à 08:14:56    

si l'interface ne le permet pas, tu n'as plus qu'à aller vior la doc de mysql pour écrire les requêtes à la main...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 05-03-2008 à 09:50:25    

J'aime bien ce post, on a un peu l'impression de jouer à la loterie du sql.
Alors je me lance et tente un:

Code :
  1. SELECT {...ce que tu veux ...}
  2. FROM
  3. MATERIEL M
  4. INNER JOIN DROIT D ON M.idMAT = D.idMAT
  5. INNER JOIN USER U ON ( D.idUser = U.idUser OR U.idAdmin = M.idAdmin)
  6. WHERE
  7. -- AU CHOIX
  8. U.idUser = X -- pour avoir la liste du matériel accessible par un utilisateur
  9. M.idMAT = Y -- pour avoir la liste des users pouvant accèder à un mat


 
Mais sinon je rejoins également skeye et badass, ton modèle c'est de la daube :o
 


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 05-03-2008 à 10:32:25    

Je comprends pas trop pourquoi tu met DROIT D   USER  U    M
mais sinon merci

Reply

Marsh Posté le 05-03-2008 à 10:33:49    

C'est comme cela que l'on note les alias :

  • Pour des champs : monchamp AS alias_monchamp
  • Pour une table  : matable alias_matable

Message cité 1 fois
Message édité par babasss le 05-03-2008 à 10:34:19

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 05-03-2008 à 11:14:30    

babasss a écrit :

C'est comme cela que l'on note les alias :

  • Pour des champs : monchamp AS alias_monchamp
  • Pour une table  : matable alias_matable

prex  [:cbrs]
le AS est toujours facultatif que ça soit pour un champ ou une table. J'exprime pleinement mon coté feignasse en ne les mettant pas.

 

Ici ils sont utiles ( et obligatoires) car plusieurs champs dans des tables différents pour le même nom ( idUser, idMAT ...).
Certains pourraient me dire "Ouais mais avec les naturals joins machins truc chouette ça marche sans alias c'est plus mieux" et la je réponds:

  • ça marcherai pas dans son cas à cause de sa condition "mixte" sur User ( droit et admin)
  • c'est illisible les naturals joins et sauf certains triviaux j'abhorre ...


Message édité par anapajari le 05-03-2008 à 11:15:04

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed