IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[SQL] Syntaxe contrainte UNIQUE.


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 95
    Points : 81
    Points
    81
    Par défaut [SQL] Syntaxe contrainte UNIQUE.
    Bonjour,
    je voudrais réaliser une contrainte sur les champs de ma table.
    Je pense que je n'ai pas pigé quelque chose dans les cours et dans la doc.

    Je souhaiterais faire en sorte qu'il n'existe qu'un seul "client_nom" et également un seul "client_login".
    Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE CLIENT (
       client_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
       client_login VARCHAR(30) NOT NULL,
       client_nom VARCHAR(30) NOT NULL,
       client_mail VARCHAR(40),
       client_passwd CHAR(40), -- mot de passe en SHA1
       client_date_creation TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
       PRIMARY KEY(client_id),
       UNIQUE(client_login, client_nom)
    ) TYPE=INNODB CHARACTER SET latin1 COLLATE latin1_swedish_ci;
    Avec UNIQUE(client_login, client_nom), il semblerait que ce soit le couple logn/nom qui soit unique et non les deux.
    Dois je séparer UNIQUE en deux comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UNIQUE(client_login),
    UNIQUE( client_nom)
    .
    Merci d'avance pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Riko63 Voir le message
    Avec UNIQUE(client_login, client_nom), il semblerait que ce soit le couple logn/nom qui soit unique et non les deux.
    Exact !
    Dois je séparer UNIQUE en deux comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UNIQUE(client_login),
    UNIQUE( client_nom)
    .
    Merci d'avance pour vos réponses.
    Oui.

    Personnellement, je mettrais un UNIQUE plutôtsur le mail que sur le nom.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 95
    Points : 81
    Points
    81
    Par défaut
    Je te remercie de ta réponse.

    Les clients auront accès à une ou plusieurs galeries photos dont les accès seront protégés par couple Login/Mot de passe.

    Maintenant j'ai des doutes sur le champs à rendre UNIQUE. C'est peut être bien le couple qui doit l'être.

  4. #4
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Je dirais que le mot de passe est un attribut du client alors que son login est une clé candidate. C'est donc le login qui doit être unique.
    Rien n'interdit à deux clients d'avoir le même mot de passe (le prénom de leur chérie par exemple) mais un login doit être unique sinon le client B risque de voir les photos du client A. Et si ce sont les photos de la chérie de B...

    En principe, une adrel est aussi unique.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mars 2009
    Messages : 95
    Points : 81
    Points
    81
    Par défaut
    Un grand merci pour ces réponses claires et précises.
    Il ne me reste plus qu'a continuer mon projet

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Contrainte "unique" sur une table sql!
    Par nixmind dans le forum Administration
    Réponses: 9
    Dernier message: 30/05/2012, 09h39
  2. Réponses: 4
    Dernier message: 13/03/2012, 12h37
  3. Réponses: 3
    Dernier message: 31/08/2006, 10h52
  4. aide PL/SQL syntaxes [debutant] [mauvaise doc]
    Par sdeb dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 19/01/2004, 13h59
  5. Suppression de la contrainte unique
    Par mika dans le forum SQL
    Réponses: 3
    Dernier message: 20/02/2003, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo