OVH Cloud OVH Cloud

Type

3 réponses
Avatar
Seb
Bonjour,

J'aurais besoin de quelques conseils concernant les types=20
de donn=E9es sous sql server.
Je voudrais savoir quel type de donn=E9es je peux utiliser=20
pour d=E9terminer un champs repr=E9sentant un num=E9ro de=20
t=E9l=E9phone ?
Et pour crypter un mot de passe, existe-t-il une fonction=20
md5 comme sous mysql qui permet de prot=E9ger tous les=20
passwd ?

Merci.

Seb

3 réponses

Avatar
Fred BROUARD
Seb a écrit:
Bonjour,

J'aurais besoin de quelques conseils concernant les types
de données sous sql server.
Je voudrais savoir quel type de données je peux utiliser
pour déterminer un champs représentant un numéro de
téléphone ?



1) un CHAR de 20 par exemple. Pas un VARCHAR.
Pourquoi ? Un tel est une des colonnes les plus fréquemment cherchées. Donc CHAR pour accès plus rapide.
Jamais un numérique...
Pourquoi ? Le principe est le suivant : si des calculs vont être effectué sur la colonne, alors numérique, si non,
jamais numérique.
Car le problème est le suivant :
Si colonne numérique alors : INSERT ... 015771621
=> donnera 15771621 car le zéro en tête n'est pas significatif pour un nombre...
De plus si colonne numérique alors le tri est l'ordre numérique qui ne correspond pas toujours à l'alpha.

LE FIN DU FIN :
gérer une double colonne :
TEL_NUM VARCHAR(20),
TEL_NUM_CALC CHAR(20)

Avec un trigger de nettoyage qui fait qu'à l'insertion, le n° de téléphone rentré dans TEL_NUM est expurgé de tout
caractères autres que les chiffres de 0 à 9 de façon à satndardiser les recherches.

En effet que se passe t-il si les utilisateurs rentrent :
01-45-77-16-21
ou
01 45 77 16 21
ou
01.45.77.16.21
ou
0145771621

???



Et pour crypter un mot de passe, existe-t-il une fonction
md5 comme sous mysql qui permet de protéger tous les
passwd ?



Non, mais il suffit de créer la table avec un utilisateur particulier et restreindre les droits à l'aide d'une vue ou de
privilèges de colonnes.

A +


Merci.

Seb



--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Seb
Merci pour toutes ces infos. En fait pour les numéros de
téléphones, j'avais mis nvarchar en attendant, mais je
vais le modifier en char.
Bonne journée.
Seb.

-----Message d'origine-----


Seb a écrit:
Bonjour,

J'aurais besoin de quelques conseils concernant les




types
de données sous sql server.
Je voudrais savoir quel type de données je peux




utiliser
pour déterminer un champs représentant un numéro de
téléphone ?



1) un CHAR de 20 par exemple. Pas un VARCHAR.
Pourquoi ? Un tel est une des colonnes les plus


fréquemment cherchées. Donc CHAR pour accès plus rapide.
Jamais un numérique...
Pourquoi ? Le principe est le suivant : si des calculs


vont être effectué sur la colonne, alors numérique, si
non,
jamais numérique.
Car le problème est le suivant :
Si colonne numérique alors : INSERT ... 015771621
=> donnera 15771621 car le zéro en tête n'est pas


significatif pour un nombre...
De plus si colonne numérique alors le tri est l'ordre


numérique qui ne correspond pas toujours à l'alpha.

LE FIN DU FIN :
gérer une double colonne :
TEL_NUM VARCHAR(20),
TEL_NUM_CALC CHAR(20)

Avec un trigger de nettoyage qui fait qu'à l'insertion,


le n° de téléphone rentré dans TEL_NUM est expurgé de
tout
caractères autres que les chiffres de 0 à 9 de façon à


satndardiser les recherches.

En effet que se passe t-il si les utilisateurs rentrent :
01-45-77-16-21
ou
01 45 77 16 21
ou
01.45.77.16.21
ou
0145771621

???



Et pour crypter un mot de passe, existe-t-il une




fonction
md5 comme sous mysql qui permet de protéger tous les
passwd ?



Non, mais il suffit de créer la table avec un


utilisateur particulier et restreindre les droits à
l'aide d'une vue ou de
privilèges de colonnes.

A +


Merci.

Seb



--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage


SQL / Delphi / web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
************************ www.datasapiens.com


*************************

.



Avatar
Oxiane
Une petite précision par rapport à ce que tu avais fait au début : nvarchar
permet de stocker en unicode des caractère, ce qui permet d'accepter des
caractères "exotiques". Cela prend par contre 2 fois plus de place (2 octets
par caractère). Eviter donc le nvarchar quand cela est possible.

--
Cordialement

Oxiane
----------------------------------------------------------
Omnia vanitas


"Seb" a écrit dans le message de
news:1821201c44a2b$81468c70$
Merci pour toutes ces infos. En fait pour les numéros de
téléphones, j'avais mis nvarchar en attendant, mais je
vais le modifier en char.
Bonne journée.
Seb.

-----Message d'origine-----


Seb a écrit:
Bonjour,

J'aurais besoin de quelques conseils concernant les




types
de données sous sql server.
Je voudrais savoir quel type de données je peux




utiliser
pour déterminer un champs représentant un numéro de
téléphone ?



1) un CHAR de 20 par exemple. Pas un VARCHAR.
Pourquoi ? Un tel est une des colonnes les plus


fréquemment cherchées. Donc CHAR pour accès plus rapide.
Jamais un numérique...
Pourquoi ? Le principe est le suivant : si des calculs


vont être effectué sur la colonne, alors numérique, si
non,
jamais numérique.
Car le problème est le suivant :
Si colonne numérique alors : INSERT ... 015771621
=> donnera 15771621 car le zéro en tête n'est pas


significatif pour un nombre...
De plus si colonne numérique alors le tri est l'ordre


numérique qui ne correspond pas toujours à l'alpha.

LE FIN DU FIN :
gérer une double colonne :
TEL_NUM VARCHAR(20),
TEL_NUM_CALC CHAR(20)

Avec un trigger de nettoyage qui fait qu'à l'insertion,


le n° de téléphone rentré dans TEL_NUM est expurgé de
tout
caractères autres que les chiffres de 0 à 9 de façon à


satndardiser les recherches.

En effet que se passe t-il si les utilisateurs rentrent :
01-45-77-16-21
ou
01 45 77 16 21
ou
01.45.77.16.21
ou
0145771621

???



Et pour crypter un mot de passe, existe-t-il une




fonction
md5 comme sous mysql qui permet de protéger tous les
passwd ?



Non, mais il suffit de créer la table avec un


utilisateur particulier et restreindre les droits à
l'aide d'une vue ou de
privilèges de colonnes.

A +


Merci.

Seb



--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage


SQL / Delphi / web
Livre SQL - col. Référence :


http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros :


http://sqlpro.developpez.com
************************ www.datasapiens.com


*************************

.