|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 112 ![]() |
Bonjour,
Tout est dans le titre mais je vais appronfondire ma question Sur une table Client qui peut potentiellement avoir jusque 4 prénom. Qu'est ce qui est mieux Prenom1 varchar (50) Prenom2 varchar (50) Prenom3 varchar (50) Prenom4 varchar (50) ou Prenom varchar (250) avec un charactere special entre chaque prenom (|,#,..). Perso je pencherai vers la seconde solution, mais je souhaiterai l'avis d'expert. Merci. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Tout dépend comment vous considérez cette information mais la première solution me parait de loin être la meilleure pour les deux raisons suivantes :
- Permet de faire des recherches rapides et de bénéficier éventuellement d'index. - Si vous avez beaucoup d'absences de valeurs (un client a rarement 4 prénoms) vous pourez toujours bénéficier des optimisations de stockage proposés par SQL Server (compression, colonnes sparses). ++ |
|
00
|
|
|
#3 |
|
Membre Expert
![]() |
J'abonde... sans compter les efforts que cela vous épargnera pour parser votre colonne prénoms afin d'extraire les différents prénoms...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#4 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Ni l'un, ni l'autre...
En sus rien n'interdit d'avoir 5 prénoms ! La seule bonne solution est de créer une table fille avec les prénoms et la position de chacun des prénoms. Exemple : Code :
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 * * * * * |
||
|
10
|
|
|
#5 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 112 ![]() |
Bonjour,
J'avoue que j'ai une préférence pour la dernière solution. Faut juste que j’appuie cette solution au DEV. Une autre question On va prendre mon cas, j’ai 4 prénoms, donc si on devait m’enregistrer il y aurai 5 insert. Donc l’application devrait avoir 5 connections(donc ouvrir 5 session) vers le SQL server, ou il est possible d’envoyer les 5 insert en une session ? Dsl, si cette question dépasse un peu le domaine SQL pure. Merci encore. |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Autant pour moi la solution de SQLPro est de loin la meilleure ... après y avoir réfléchi juste un peu
![]() ++ |
|
00
|
|
|
#7 |
|
Membre Expert
![]() |
Pareil...
Oui on ne va pas reparler de première forme normale ![]() La dernière fois cela s'est terminé en débat interminable (mais au combien intéressant) avec fsmrel: http://www.developpez.net/forums/d36...08-nouveautes/
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 667 ![]() |
Hé les gars, faut penser à vous reposer
J'ai pensé à une solution proche de celle proposée par SQLPro dès la lecture du premier post ! @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 112 ![]() |
Salut,
J'y avais pensé aussi, si si Mais pour une obscure raison, je me suis laissé entrainé par les besoin des devlopeurs en pensant à leur facilité, mais cela était mon erreur Merci encore de m'avoir ouvert les yeux (on croirais presque à un rite religieux ^^) Merci pour le lien, Encore de la lecture ^^ |
|
|
00
|
|
|
#10 | |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 112 ![]() |
Une idée pour ma question ? ^^, merci d'avance.
Citation:
|
|
|
|
00
|
|
|
#11 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Vous pouvez insérer vos 4 prénoms dans une seule session SQL Server depuis votre application.
Une session peut très bien avoir plusieurs requêtes SQL actives. @Elsuket > Je crois oui ou il faudrait que je réponde à tête reposée quand je ne suis pas en train de gérer un autre problème :-) ++ |
|
00
|
|
|
#12 | |
|
Membre Expert
![]() |
Citation:
Depuis la 2008 cette syntaxe fonctionne (à générer dans votre code ADO par exemple avec des SqlParameters bien entendu pour éviter des attaques SQL comme sur mysql.com...): Code :
INSERT INTO TABLE(col1,col2...) VALUES (valcCol1,ValPrenom1),(valCol1,ValPrenom2),(valCol1,ValPrenom3)
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#13 | |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 112 ![]() |
Citation:
Interessant, Quel sont ces parametres? (oui on utilise 2008 R2) ? Mais si je veux faire; insert into Client (...) Value (...) & insert into client_prenom (...) Value (...)(...)(...)(...) L'appli devra ouvrir au moins 2 connections? |
|
|
|
00
|
|
|
#14 |
![]() ![]() ![]() David BARBARINExpert SQL Server Inscription : août 2005 Messages : 3 723 ![]() |
Non si vous exécutez ces requêtes dans une même session.
++ |
|
00
|
|
|
#15 | |
|
Membre Expert
![]() |
Citation:
Ça dépend de vous... qu'utilisez vous pour accéder à votre base de données?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#16 | ||||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Ou mieux en utilisant une vue et un triigger INSTAED OF INSERT....
Démonstration Code :
Code :
__________________
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 * * * * * |
||||
|
00
|
|
|
#17 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 112 ![]() |
Bonjour,
Encore une petite question, est ce que SQL 2008 a une fonction d'agregat pour concat du varchar, l'idée serait de remplacer 1 Dupont Michael 1 Dupont Marc 1 Dupont Laurent par : 1 Dupont Michael, Marc, Laurent. Histoire déviter de créer une fonction pour le faire. |
|
|
00
|
|
|
#18 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 112 ![]() |
Re bonjour,
en proposant l'idée de la table prenom, je suis venu avec les arguments suivant : • Normalisation, • gain d’espace disque, • donc moins de fragmentation • lors des requêtes faire un « where » sur une seul colonne et non sur les 4 prénoms potentiel Est ce que vous voyez d'autre argument que j'aurais manqué? Merci pour votre temps |
|
|
00
|
|
|
#19 | |
|
Membre Expert
![]() |
Citation:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
|
00
|
|
|
#20 | |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 953 ![]() |
Citation:
Dans la solution avec table externe, un index peut être systématiquement utilisé si on le pose sur l'unique colonne prenom. 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 * * * * * |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com