Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2011, 10h33   #1
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
Par défaut type de clé primaire pour une table pseudo temporaire

Bonjour à tous, j'ai juste une question sur les clés primaires et le type suivant le cas de figure.

Je ne vous cache pas que je suis très attentif concernant les performances mais également le côté pratique.
J'ai une table qui va contenir une trace de chaque action émise par des membres cette table est donc pseudo temporaire étant qu'elle sera vidé de temps à autres.

Dans ce cas l'utilisation d'un identifiant numérique auto incrémenter n'est pas l'idéal.
En gros chaque membre peut supprimer une entrée, ou plusieurs de son gestionnaire d'action mais peut également le vider entièrement sans oublier que l'administrateur vide cette espace de temps en temps.
Donc ma question l'utilisation d'un type varchar pour la clé primaire de ses entrée est elle une bonne idée sachant que le numérique est de toute façon plus rapide.

En gros je vais générer de manière aléatoire de longue clé alphanumérique (30 caractères) pour être certain de limité la casse sur le côté unique de la clé.

Un peu de ce style : f1be90a92604482a84d87d600b66ace8
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.
AFUP 2009 : Bien optimiser son code pour le référencement
Mon projet open source de librairie PHP 5: magix cjquery
gtraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 16h52   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 997
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 997
Points : 18 256
Points : 18 256
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par gtraxx Voir le message
J'ai une table qui va contenir une trace de chaque action émise par des membres cette table est donc pseudo temporaire étant qu'elle sera vidé de temps à autres.

Dans ce cas l'utilisation d'un identifiant numérique auto incrémenter n'est pas l'idéal.
Pourquoi cet a priori ?
Citation:
Envoyé par DocMySQL
INT | codé sur 4 octets | de -2 147 483 648 à 2 147 483 647
BIGINT | codé sur 8 octets | de -9 223 372 036 854 775 808 à + 9 223 372 036 854 775 807
Il y a de quoi en stocker des actions d'utilisateurs non ?

Citation:
Donc ma question l'utilisation d'un type varchar pour la clé primaire de ses entrée est elle une bonne idée sachant que le numérique est de toute façon plus rapide.
Le VARCHAR est à bannir des clés primaires !
Voir l'article de SQLPro sur ce qu'est une bonne clé.

Citation:
En gros je vais générer de manière aléatoire de longue clé alphanumérique (30 caractères) pour être certain de limité la casse sur le côté unique de la clé.

Un peu de ce style : f1be90a92604482a84d87d600b66ace8
Mauvaise idée !

Je reprends le début de la première phrase citée :
Citation:
J'ai une table qui va contenir une trace de chaque action émise par des membres
Si les actions sont génériques et pré-définies dans une table des actions, tu as ce MCD :
membre -0,n----Effectuer----0,n- action
date -0,n---------------|

Ce qui génère, par exemple, les tables suivantes :
membre_mbr (mbr_id, mbr_nom...)
action_act (act_id, act_libelle...)
mbr_effectuer_act_mea (mea_id_membre, mea_id_action, mea_date...)

=> La clé primaire est alors double colonnes, chaque colonne n'ayant jamais une valeur supérieure au nombre de membres ou d'actions maximum.

Si chaque action enregistrée n'est associée qu'à un seul utilisateur, tu as ce MCD :
membre -0,n----Effectuer----1,1- action

Ce qui génère, par exemple, les tables suivantes :
membre_mbr (mbr_id, mbr_nom...)
action_act (act_id, act_id_membre, act_libelle, act_date...)

=> Cette fois il peut y a voir à long terme un act_id très grand si tu as beaucoup de membres qui font beaucoup d'actions. mais encore une fois, avant d'arriver à 9 milliards de milliards d'actions enregistrées avec un BIGINT, je penses que tu as le temps ! Et si tu crains de ne pas en avoir assez, avec un UNSIGNED BIGINT, ça te fait 18 milliards de milliards !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 10h56   #3
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
Ok ok, merci cinePhil
En gros un bon vieux int, ... avec un auto incrément fera l'affaire.
J'ai été assez perturber en fouillant sur le net suivant le sujet des clé primaire assez contradictoire sans pour autant avoir une réponse clair au niveau des perf
Je vais revoir ma structure et adapter mon système de clé : f1be90a92604482a84d87d600b66ace8
Pour tout à fait autre chose, pourquoi pas une clé API
J'ai répondu en privée concernant ta question sur zend jquery
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.
AFUP 2009 : Bien optimiser son code pour le référencement
Mon projet open source de librairie PHP 5: magix cjquery
gtraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 11h01   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 997
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 10 997
Points : 18 256
Points : 18 256
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par gtraxx Voir le message
Pour tout à fait autre chose, pourquoi pas une clé API
Qu'appelles-tu une "clé API" ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 11h08   #5
Membre éprouvé
 
Avatar de gtraxx
 
Homme Aurélien Gérits
Développeur Web
Inscription : mai 2006
Messages : 1 045
Détails du profil
Informations personnelles :
Nom : Homme Aurélien Gérits
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mai 2006
Messages : 1 045
Points : 498
Points : 498
Ben je cherchais le moyen d'avoir des clés primaire bien optimisé ou du moins d'avoir un complément d'explication.
Mais je devais implanter dans un tout autre contexte un système de clé d'API pour les membres ayant la possibilité d'utiliser des portions de scripts dans leurs site (un simple champs varchar dans la table).
Je travail sur plusieurs plate forme pour le moment qui vont utiliser ce genre de système
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.
AFUP 2009 : Bien optimiser son code pour le référencement
Mon projet open source de librairie PHP 5: magix cjquery
gtraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h22.


 
 
 
 
Partenaires

Hébergement Web