CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [SQL] Choix du type de données pour une clé primaire

DébutPage précedente
1
Page suivantePage suivante
Gamer_31 Gamer_31
MP
Niveau 10
06 décembre 2016 à 14:43:16

Bonjour à tous !

Je suis relativement débutant dans le monde du SQL et des bases de données, et je me pose une question à laquelle je n'ai pas pu trouver de réponse claire :
Je suis en train de créer une base de donnée, qui gère, entre autres, des étudiants ayant pour clé primaire, un n° étudiant, propre à chacun.
La question que je me pose concerne le type de données que je dois attribuer au champs numéro étudiant : il s'agit bien sûr d'un chiffre, mais aucun calcul ne sera effectué dessus, il me semble donc possible de le gérer comme un champs textuel.
Est-ce qu'un choix est plus pertinent que l'autre ? Et pourquoi ?

Question subsidiaire : il me semble intéressant de créer un index sur ce champs, qui potentiellement, pourra contenir un grand nombre de valeur. Dois-je créer un index s'appuyant sur ce champs (avec une commande CREATE INDEX donc), ou le fait qu'il s'agisse d'une clé primaire est-il-suffisant ?

Petit extrait de la commande CREATE (script généré par WinDesign à partir du modèle relationnel) :

CREATE TABLE ETUDIANT
( N°ETUDIANT char(32) NOT NULL ,
NOM char(32) NOT NULL ,
PRENOM char(32) NOT NULL ,
ADRESSE char(32) NOT NULL ,
CODE_POSTAL char(32) NOT NULL ,
VILLE char(32) NOT NULL ,
PAYS_D_ORIGINE char(32) NULL ,
DATE_DE_NAISSANCE DATE NOT NULL ,
ANNEE_PREMIERE_INSCRIPTION SMALLINT NULL ,
CONSTRAINT PK_ETUDIANT PRIMARY KEY (N°ETUDIANT) );

:merci: d'avance !

shmemory shmemory
MP
Niveau 8
06 décembre 2016 à 16:44:07

Il y aura une différence pour les 0 non significatifs pour l'étudiant n°5 son ID sera 5 avec un int mais "00000000005" avec un char.

Sinon avec une clé primaire en INT tu pourras aussi bénéficier de l'auto incrément qui t'évitera de chercher à quelle valeur il faut mettre la variable pour les lignes que tu insères

SobolevSpace SobolevSpace
MP
Niveau 34
06 décembre 2016 à 17:05:52

Le 06 décembre 2016 à 14:43:16 Gamer_31 a écrit :
Bonjour à tous !

Je suis relativement débutant dans le monde du SQL et des bases de données, et je me pose une question à laquelle je n'ai pas pu trouver de réponse claire :
Je suis en train de créer une base de donnée, qui gère, entre autres, des étudiants ayant pour clé primaire, un n° étudiant, propre à chacun.
La question que je me pose concerne le type de données que je dois attribuer au champs numéro étudiant : il s'agit bien sûr d'un chiffre, mais aucun calcul ne sera effectué dessus, il me semble donc possible de le gérer comme un champs textuel.

> Est-ce qu'un choix est plus pertinent que l'autre ? Et pourquoi ?

[...]
CREATE TABLE ETUDIANT
( N°ETUDIANT char(32) NOT NULL

Tu choisis le format qui prends le moins de place.
Là tu veux réserver 32 caractères, t'as une école avec des étudiants provenant du fin fond de l'univers pour avoir 10^33 étudiants? [[sticker:p/1kki]]
Imaginons t'as 30000 étudiants, si tu veux représenter l'id en char t'auras besoin de 5 caractères soit 5 octets.
En utilisant des entiers non signés t'aura besoin de 15 bits soit 2 octets.

Gamer_31 Gamer_31
MP
Niveau 10
06 décembre 2016 à 19:20:33

Super merci, ça m'aide à y voir plus clair :ok:

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment