Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Administration
Administration Forum d'entraide sur l'administration du dataserver, via SSM ou ligne de commande, les tables système, ...
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 24/11/2010, 13h57   #1
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Par défaut Table sans PK : SGBDR permissif, pourquoi ?

Bonjour,
Il me semble que dans la théorie du modèle relationnel, chaque table DOIT avoir une clé primaire (identifiant unique).
Mais comment comprendre le fait que les éditeurs de SGBDR soient permissifs vis à vis de cette recommandation [qui devrait figurer dans les normes ISO (je ne sais plus laquelle)] et autorise la création de table sans PK ?
J'ai entendu dire que pour une table temporaire par exemple on n'a pas besoin de PK. Et que posé une clé primaire sur une table temporaire va ralentir les traitements.
Et je réponds OUI, si cette affirmation est vraie pour les tables temporaires par exemple, pourquoi pour les tables permanentes il y a aucune alerte de la part des SGBDR pour notifier l’existence de table permanente sans PK ?

Merci de m'éclairer
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 14h14   #2
Membre chevronné
 
David BAFFALEUF
Inscription : février 2008
Messages : 611
Détails du profil
Informations personnelles :
Nom : David BAFFALEUF
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 611
Points : 742
Points : 742
Il n'y a pas de règle universelle pour les tables temporaires. Tout dépend de ce que l'on veut en faire. Si on a besoin de faire une jointure entre une table temporaire et une table physique, ou rechercher sur un critère dans la table temporaire par exemple, ça peut être intéressant de placer un index (par exemple pour les très longues IN-Lists). Le fait que les tables temporaires contiennent assez souvent peu de volumétrie a peut être répandu cette idée, mais ce n'est pas généralisable (pas grand chose ne l'est en définitive).

Et un SGBD ne peut pas contraindre un développeur à mettre des clés primaires partout, il y a des cas où ça n'a pas de sens (certaines tables de logs).
__________________
David B.
dbaffaleuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 14h48   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 935
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 935
Points : 17 743
Points : 17 743
Le fait de faire des tables sans clef à été spécifiquement pensé pour la reprise des données. En effet rien ne dit que l'on a pas des doublons dans des fichiers... Or traiter un fichier est souvent plus long que de le faire dans les lignes d'une table.

C'est pourquoi, oui, des tables sans clef sont utile notamment pour des imports voire des exports, voire des tables de log (exemple table de hit d'un site web ou 2 utilisateur peuvent avoir affiché la même page à la même milliseconde).

En sus, une très petite table et qui le restera toujours (exemple, table des sexe, des civilités) sera en principe plus rapide sans aucune clef ni index, car il n'y aura jamais lecture que d'une page, alors qu'avec un index ce sera un minimum de deux !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 16h33   #4
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par dbaffaleuf Voir le message
Et un SGBD ne peut pas contraindre un développeur à mettre des clés primaires partout, il y a des cas où ça n'a pas de sens (certaines tables de logs).
Je comprends parfaitement ton point de vue. Et je le partage.
Même pour une table de logs je dirai comme toi "ça dépend !"
Quelques soit le niveau du log, je pense que les tables de logs d'application grossissent vite si elles ne sont pas purgées. Et si on utilise ces tables de logs pour faire du reporting, ou rechercher (ou étudier) un évènement particulier sur une période donnée. ça peut être utile d'avoir un PK ?
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 16h45   #5
Membre chevronné
 
David BAFFALEUF
Inscription : février 2008
Messages : 611
Détails du profil
Informations personnelles :
Nom : David BAFFALEUF
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 611
Points : 742
Points : 742
Ce sont les traitements qui pilotent les choix d'indexation, donc oui.
__________________
David B.
dbaffaleuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 16h54   #6
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par SQLpro Voir le message
Le fait de faire des tables sans clef à été spécifiquement pensé pour la reprise des données. En effet rien ne dit que l'on a pas des doublons dans des fichiers... Or traiter un fichier est souvent plus long que de le faire dans les lignes d'une table.

C'est pourquoi, oui, des tables sans clef sont utile notamment pour des imports voire des exports, voire des tables de log (exemple table de hit d'un site web ou 2 utilisateur peuvent avoir affiché la même page à la même milliseconde).

En sus, une très petite table et qui le restera toujours (exemple, table des sexe, des civilités) sera en principe plus rapide sans aucune clef ni index, car il n'y aura jamais lecture que d'une page, alors qu'avec un index ce sera un minimum de deux !

A +
100 % d'accord. Et c'est logique.

Dans ces conditions on peut donc s’asseoir sur les règles de la normalisation ?
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 17h10   #7
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 515
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 515
Points : 3 963
Points : 3 963
Citation:
Envoyé par zinzineti Voir le message
100 % d'accord. Et c'est logique.
Dans ces conditions on peut donc s’asseoir sur les règles de la normalisation ?
Pour les progiciels qui utilisent ce genre de principe - pas de pk ni de fk - c'est vraisemblablement plus du à une ignorance totale de la conception de BD qu'à une réflexion profonde...
Du bricolage de stagiaire du prototype qui perdure car les priorités du développement sont ailleurs...
J'en ai un très beau exemple dans mes bds et c'est une horreur à manipuler car ça craque de partout!
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 17h23   #8
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par 7gyY9w1ZY6ySRgPeaefZ Voir le message
Pour les progiciels qui utilisent ce genre de principe - pas de pk ni de fk - c'est vraisemblablement plus du à une ignorance totale de la conception de BD qu'à une réflexion profonde...
Du bricolage de stagiaire du prototype qui perdure car les priorités du développement sont ailleurs...
J'en ai un très beau exemple dans mes bds et c'est une horreur à manipuler car ça craque de partout!
C'est justement ce même constat qui m'a motivé à écrire le billet "Montre-moi tes tables et je te dirai ce que vaut ta base ..."
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 18h12   #9
Membre chevronné
 
David BAFFALEUF
Inscription : février 2008
Messages : 611
Détails du profil
Informations personnelles :
Nom : David BAFFALEUF
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 611
Points : 742
Points : 742
Citation:
Envoyé par zinzineti Voir le message
Dans ces conditions on peut donc s’asseoir sur les règles de la normalisation ?
Il faut s'asseoir dessus quand ça ne vaut pas le coup, c'est à dire dans les cas isolés que Frédéric a évoqué. Pour le reste, ce n'est pas normal qu'une table métier dans un modèle relationnel n'ait pas été passée à la 1FN.
__________________
David B.
dbaffaleuf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 18h44   #10
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 354
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 354
Points : 9 745
Points : 9 745
Citation:
Envoyé par zinzineti Voir le message
Et si on utilise ces tables de logs pour faire du reporting, ou rechercher (ou étudier) un évènement particulier sur une période donnée. ça peut être utile d'avoir un PK ?
Ca peut être utile d'avoir un index, mais pas forcément une PK.
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2010, 11h37   #11
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 935
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 935
Points : 17 743
Points : 17 743
Non ce serait plutôt le contraire, car sans PK => doublons et supprimer les doublons est une horreur ! Voir impossible sans changer la structure de la table....

Or une PK créé un index...

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro 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 16h07.


 
 
 
 
Partenaires

Hébergement Web