Lorsqu'on pratique l'identification relative, il est impossible d'utiliser l'AUTO_INCREMENT pour numéroter la seconde colonne de la clé primaire relativement à la première qui est une clé étrangère. Par exemple, une chaîne hôtelière pourra avoir, dans sa base de données, une table "Hotel" et une table "Chambre" identifiée relativement à "Hotel". C'est à dire que pour chaque identifiant d'hôtel dans la table "Chambre", le numéro de la chambre repart de 1.
Je décris ci-après la numérotation automatique des chambres, tout en SQL avec MySQL mais sans doute facilement adaptable dans le langage procédural de n'importe quel autre SGBD et pour d'autres besoins tels que les lignes de commande, de facture ou de livraison ou (ce qui m'a amené à étudier ce sujet) les numéros d'exercice d'un examen.
Vous devez être identifié pour poster un commentaire.
Comment MySQL gère t-il ses collations, c'est à dire la manière dont son gérer les comparaisons entre littéraux, notamment la sensibilité au regarde de la casse (différentiation entre majuscules et minuscules) ou en ce qui concerne la sensibilité aux caractères diacritiques (les accents, la cédille, les ligatures) ?
Le moins que l'on puisse dire c'est que la façon de gérer les collations est particulièrement confuse dans MySQL.
Vous devez être identifié pour poster un commentaire.
, jpoulson [Pour récompenser les participants à un système de vote j'ai récemment ajouté une règle qui rétribue des points (chaque vote = 1 point) selon un plafond maximal par journée. Vous découvrirez l'implémentation ci-dessous.
Vous devez être identifié pour poster un commentaire.
, jpoulson [Contrairement à un serveur SMTP, la fonction mail de PHP ne supporte pas la confirmation à la réception ce qui rend difficile la tâche de déterminer si une adresse est valide. Certains hébergeurs comme OVH renvoient périodiquement une liste d'adresses produisant des erreurs (boite indisponible, adresse inconnue...). Voici comment constituer un script pour traiter ce genre de liste.
Vous devez être identifié pour poster un commentaire.
, jpoulson [Il peut être utile de garder une trace de l'adresse IP d'un point de vue de sécurité ou lorsqu'on souhaite rediriger un visiteur sur base géographique*.
Voici donc comment récupérer une adresse IP distante dans le langage PHP et la stocker dans une base de données.
Vous devez être identifié pour poster un commentaire.
, sqlpro [La plupart des développeurs sont persuadés que mettre toutes les informations dans une même table rendra leur base de données plus rapide... Et l'on voit apparaître dans la base de nombreuses tables de plusieurs dizaines de colonnes. C'est une vue à court terme, car dès que la base de données commence à croitre ou que le nombre d'utilisateur augmente, les performances deviennent vite catastrophique... Cet article explique pourquoi...
Vous devez être identifié pour poster un commentaire.
, jpoulson [Si vous avez déjà essayé d'utiliser un LIMIT dans une sous-requête vous avez très certainement rencontré ce message ci:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Heureusement, il y a la possibilité de contourner cela selon une astuce similaire à celle présentée dans un article précédent.
Vous devez être identifié pour poster un commentaire.
, jpoulson [Dans certains cas de figure on peut souhaiter d'insérer un record et n'effectuer aucun changement si les informations sont déjà présentes.
Un exemple concret est l'entretien d'une table d'adresses email erronnées qui peut être utile lorsqu'un hébergeur a pour politique de bloquer les envois pour éviter le spam.
Vous devez être identifié pour poster un commentaire.
, jpoulson [Pour un système d'affichage de commandes on m'a demandé de reprendre ceux qui ont eu lieu sur le mois. Il y a sans doute plusieurs manières de procéder mais celle qui semble la plus sensée est d'intégrer des critères directement à une requête SQL.
Vous devez être identifié pour poster un commentaire.
, jpoulson [Pour un site j'ai implémenté une table pour faire lien entre l'id d'un profil et celui des utilisateurs qui visitent ce profil.
id int(10) UNSIGNED Non Aucun AUTO_INCREMENT
profile_id int(10) UNSIGNED Non 0
visitor_id int(10) UNSIGNED Non 0
date_visited timestamp Non CURRENT_TIMESTAMP
M'étant limité à une requête qui créé une paire ou qui mets à jour un timestamp si l'enregistrement existe, je me suis rendu compte que celle-ci ne se comportait pas comme prévu et produisait des doublons. En attendant de corriger celle-ci, il me fallait donc trouver une solution pour nettoyer la table en enlevant tout sauf un doublon pour chaque paire.
Vous devez être identifié pour poster un commentaire.
, sqlpro [Suite au précédent article consacré à ce sujet, je me suis penché sur différentes solutions publiée sur le net et leurs coûts d'exécution. Voici une étude pratique avec un test de comparaisons des différentes requêtes sur les différents SGBDR, que sont MS SQL Server, MySQL et PostGreSQL. Cette étude constitue un excellent benchmark de SGBDR pour des requêtes moyennement difficiles (elles ne portent jamais que sur une seule table !).
Vous devez être identifié pour poster un commentaire.
, sqlpro [Le langage SQL incorpore dans sa norme SQL ISO 13249 des extensions pour la recherche plain texte (2 - Full-Text).
La recherche plain texte permet de retrouver des données contenant certains mots, expressions ou formes fléchies de mots, synonymes, etc. dans les lignes des tables, y compris pour des colonnes de type LOB pouvant contenir de grand textes (CLOB, NCLOB) voire des fichiers électroniques binarisés (BLOB).
Cet article propose une comparaison de la norme avec les solutions proposées par Oracle MySQL 5.0 et Microsoft SQL Server 2008 pour l'indexation textuelle aussi appelée indexation de texte intégrale et son corolaire, la recherches plain texte (ou encore la recherche en texte intégral - Full text search).
Vous devez être identifié pour poster un commentaire.
Ce blog doit vous présenter l'ensemble des blogs SGBD. Il est en cours de constitution et sera finalisé d'ici fin septembre 2008.
| Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Copyright © 2000-2012 - www.developpez.com