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 02/06/2011, 19h09   #1
Membre habitué
 
Inscription : septembre 2004
Messages : 244
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 244
Points : 110
Points : 110
Par défaut conseil bdd, est-ce utile un ID ?

Bonjour,

J'essaye de concevoir une bdd, et j'ai pas l'habitude

A priori, je vais partir sur ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
titre          type de données
------------------------------------------------
link		        var char 255		PRIMARY KEY
enclosure	        var char 255
title		        var char 255
description         text
region	       var char 50
formation	       var char 50
contrat		var char 50
salaire		var char 50
category	      var char 50
postal		int 7
state		      var char 50
country		var char 50
tag		       var char 50
source		var char 50
geolocalisation	var char 50
date		       timestamp
Peut'on mettre une url en primary key ?
J'ai pas mis d'identifiant, est-ce utile ?

Merci bcp
omelhor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 21h45   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Bonjour,

Oui, les clés numériques sont préférables, pour pleins de raisons (indexation, taille...).
En tout état de cause, une chaîne de taille variable et potentiellement longue est déconseillée.
Mieux vaut un identifiant numérique.
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/06/2011, 10h40   #3
Membre régulier
 
Avatar de Netek
 
Homme Damien Gros
Développeur Web
Inscription : mars 2011
Messages : 58
Détails du profil
Informations personnelles :
Nom : Homme Damien Gros
Âge : 25
Localisation : France, Gard (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mars 2011
Messages : 58
Points : 73
Points : 73
Envoyer un message via MSN à Netek
Oui il vaut mieux toujours mettre un ID en auto increment.
Meme si dans l'immédiat tu penses ne pas en avoir besoin, tu pourrais t'en mordre les doigts plus tard ^^
Netek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 16h13   #4
Membre habitué
 
Inscription : septembre 2004
Messages : 244
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 244
Points : 110
Points : 110
Citation:
Envoyé par ced Voir le message
Bonjour,

Oui, les clés numériques sont préférables, pour pleins de raisons (indexation, taille...).
En tout état de cause, une chaîne de taille variable et potentiellement longue est déconseillée.
Mieux vaut un identifiant numérique.
Je vais suivre vos conseils pour l'ID.

quand tu dit
<<<
En tout état de cause, une chaîne de taille variable et potentiellement longue est déconseillée.
>>>
Cela vaut pour pour le link que j'ai mis en primary key ?
Mon but est de récupérer des news via des flux RSS, et je ne veut pas avoir 2 fois la même news, comment faire ???
J'avais pensé au "title" ou "date", mais je peut tout a fait retrouver les mêmes dans des news différentes
omelhor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 16h23   #5
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 363
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 363
Points : 1 546
Points : 1 546
Bonjour

Citation:
Peut'on mettre une url en primary key ?
Qu'est-ce qui t'en empêche ?

Citation:
et je ne veut pas avoir 2 fois la même news, comment faire ???
Mettre un cle primaire !

Citation:
quand tu dit
<<<
En tout état de cause, une chaîne de taille variable et potentiellement longue est déconseillée.
>>>
Cela vaut pour pour le link que j'ai mis en primary key ?
Oui, c'est ce que ça veut dire. Si ton Appli reçoit un grand nombre de visiteurs (2000, 10000, 1 000 000, soyons fous ), cela peut impacter les performances de manière drastique.

Citation:
Oui il vaut mieux toujours mettre un ID en auto increment.
C'est selon ! Pas plus compliqué pour une BdD d'indexer un id numérique qu'un Id alpha ...
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 17h49   #6
Membre habitué
 
Inscription : septembre 2004
Messages : 244
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 244
Points : 110
Points : 110
Ok je vois. Du coup on sais jamais, pour faire attention au côté performance je pense que je vais oublier la clé primaire sur le link.

Lors de l'insertion en bdd, pour ne pas avoir de doublon,je vais controlé si la news existe déjà via le link :
Si link existe, j'insère pas, si link n'existe pas j'insère
Mais imaginons que j'ai 200 000 enregistrement, cela ne risque t'il pas d'impacté mes performances ? Si oui quelq'un a t'il une idée a mon problème ?
omelhor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2011, 17h16   #7
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 363
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 363
Points : 1 546
Points : 1 546
Tu peux aussi indexer également ton champs link (en plus de la clé primaire). Index unique, comme ça, en cas de doublons, une exception sera levée.
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2011, 20h44   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 006
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 : 11 006
Points : 18 276
Points : 18 276
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par omelhor Voir le message
A priori, je vais partir sur ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
titre          type de données
------------------------------------------------
link                var char 255        PRIMARY KEY
enclosure            var char 255
title                var char 255
description         text
region           var char 50
formation           var char 50
contrat        var char 50
salaire        var char 50
category          var char 50
postal        int 7
state              var char 50
country        var char 50
tag               var char 50
source        var char 50
geolocalisation    var char 50
date               timestamp
Peut'on mettre une url en primary key ?
J'ai pas mis d'identifiant, est-ce utile ?
Comme l'ont conseillé les autres, pas de chaîne de caractères longue en clé primaire de la table.
Un article à lire sur les clés auto-incrémentées chez SQLPro.

Autres remarques...

Tu auras probablement plusieurs fois la même région avec le risque potentiel qu'une même région soit orthographiée différemment dans deux lignes de la table. Il vaut mieux alors faire une table de référence des régions et ne mettre ici qu'une clé étrangère faisant référence à l'identifiant de la région.

Idem pour category, state, country et peut-être aussi formation et contrat.

Un code postal n'est pas un nombre avec lequel on va faire des calculs mais... un code ! En France, les codes postaux sont composés de 5 chiffres, même si le département est inférieur à 10. Si tous tes codes postaux sont français, utilise le type CHAR(5).

Citation:
Mon but est de récupérer des news via des flux RSS
Que viennent alors faire les données relatives à la géolocalisation, au contrat, au salaire ?

Tu devrais réfléchir de façon plus approfondie à ton modèle de données.
__________________
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 actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web