Ralentissement de Youtube ? En voici l’explication !

La plupart des internautes français le constatent : Youtube rame complètement. Impossible depuis plusieurs semaines de lire correctement une vidéo en 360p et je ne vous parle même pas de la HD. Quels sont les FAI qui rencontrent un souci avec Youtube ? :

  • Free – Touché très fortement
  • SFR – Touché
  • Orange -Touché
  • Bouygue – Pas de problème
  • Numéricable – Pas de problème
  • Renater et autres machins un peu exotiques – Pas de problème

Pas besoin donc de rebooter ma Freebox en invoquant l’esprit magique de Xavier Niel (l’équivalent de eywa chez les na’vi).

SFR FAI   La stratégie du pourrissement

SFR

numericable FAI   La stratégie du pourrissement

Numéricable

renater FAI   La stratégie du pourrissement

Renater

bouygues FAI   La stratégie du pourrissement

Bouygues

orange1 FAI   La stratégie du pourrissement

Orange

free FAI   La stratégie du pourrissement

Free

Le problème ici est un problème de tuyau et d’argent. Une histoire digne d’un épisode de Dallas ou Dynastie !! Je vais essayer de vous expliquer les raisons de ce blocage pour le moins énervant…

Comme on l’a vu par le passé avec des histoires comme Megaupload et Orange, ou encore Neuf et Dailymotion, les internautes continuent d’être les victimes permanentes d’une guerre que se livrent les FAI et les fournisseurs de contenu. Si je prends le cas de Youtube, il y a effectivement de plus en plus de monde qui s’y connecte pour regarder des vidéos de plus en plus lourdes. Les tuyaux entre les FAI et Youtube, qui ont été mis en place suite à des accords de peering ne sont plus assez « gros » (en plus d’être mal équilibrés), ce qui provoque un engorgement.

Le résultat est là : une majorité d’abonnés ADSL français sont dans l’incapacité de lire une vidéo Youtube sans la laisser pré-charger pendant 1/4 d’heure.

Seule solution pour régler le problème : Augmenter la taille du tuyau.

Techniquement, c’est faisable très simplement… Alors pourquoi est ce que ce problème perdure ? Et bien la vraie raison est que cela coûte un peu d’argent.

La question est donc : Qui doit payer ?

Le deal que nous avons tous passé avec notre FAI est le suivant : « Je te paye un abonnement tous les mois et tu me donnes accès à Internet »Mais aujourd’hui, ce deal n’est plus respecté.

En effet, que ce soit à l’époque avec le cas Megaupload, ou maintenant avec Youtube, ce n’est plus un véritable accès à Internet que nous avons. Nous nous dirigeons petit à petit vers un internet qui ressemblera plutôt à un bouquet payant de sites internet.

Bof bof… Je suis désolé mais je paye un abonnement aussi pour avoir accès à Youtube. Cette situation n’est donc pas normale et doit être réglée. Historiquement et logiquement, c’est aux FAI de se démerder pour que l’accès de leurs abonnés soit le plus fluide possible, quelque soit le site internet consulté.

Mais comme je vous le disais, augmenter la taille des tuyaux coûte un petit peu d’argent. Les FAI tentent donc depuis plusieurs mois de faire pression sur certains éditeurs de contenu et en particulier Google, pour que ceux-ci prennent à leur charge cette dépense. On la vu encore récemment avec SFR qui a tenté un coup de poker avec OVH en essayant de leur faire payer le peering.

Seul hic : Les éditeurs de contenu ne veulent pas payer. Google fait de la résistance et avec lui des services de CDN comme Akamai.

Vous l’aurez compris, nous sommes dans une impasse… Il s’agit d’un vrai bras de fer entre les FAI et les fournisseurs de contenu. Et malheureusement, la stratégie adoptée par Free, Orange et SFR semble être celle du pourrissement. On laisse l’accès au site Youtube pour ne pas être accusé de censeurs, mais avec un débit de merde, pour que les gens pensent que c’est chez Youtube que ça coince. Je déduis quand même, à la vue des graphiques envoyé par mes gentils followers, qu’Orange et SFR ont un peu plus de pitié pour leurs abonnés et doivent déporter une petite partie du surplus de ces connexions sur du Transit IP (c’est à dire de l’achat de bande passante à un opérateur). Par contre, chez Free, ils sont sans pitié… Un véritable manque de respect pour ses abonnés !

Free veut jouer les gros bras face à Google, alors on laisse saturer le peering et basta. Stratégie très agressive dont nous subissons tous les conséquences… On nous a d’ailleurs tellement bien bourré le crâne en nous expliquant que si le FAI prenait à sa charge ce coût d’évolution actuelle, le prix de notre abonnement ADSL augmenterait, qu’en bon français grippe-sou, nous en venons à défendre bec et ongle notre FAI, montrant du doigt le méchant Google ! Hors de question de voir notre abonnement ADSL augmenter !

Pire, on plaindrait presque les FAI de devoir payer la facture… « Non, mais vous comprenez, les pauvres, pourquoi est ce qu’ils devraient augmenter les capacités de leur réseau pour 1 ou 2 site populaire comme Youtube ? » Pourquoi ??? Parce que c’est leur travail et qu’on les paye pour ça !

network map free FAI   La stratégie du pourrissement

Puis arrêter de tout faire passer par Paris, en améliorant le maillage du réseau, ça ne pourra pas faire de mal…

La vérité, c’est que les FAI ont tout l’argent nécessaire pour faire évoluer leurs infrastructures et assurer un accès internet de bonne qualité à leurs clients. C’est prévu dans leur business model depuis le début et je vais même vous dire mieux : Ils sont tellement rentables qu’ils pourraient le faire sans problème dès à présent ! Si je reprends le cas de Free et de la maison mère Iliad, leur activité est très très très rentable. D’après le dernier rapport de gestion publié par iliad [PDF], leur marge brute est de 55,9%, leur marge EBITDA de 39,1% et enfin, leur marge nette est de 15,3%.

Autant dire que l’argent pour upgrader son réseau, Free l’a largement avec ses 4,5 millions d’abonnés. Mais il semblerait qu’ils préfèrent réduire au maximum les dépenses sur le réseau actuel pour se concentrer sur l’avenir : le FTTH ou Très haut débit. L’idée en mettant le paquet dès le début sur le FTTH est toujours la même : Ecraser la concurrence en construisant le réseau de nouvelle generation le plus capillaire possible pour l’utiliser et le louer aux concurrents pendant des décénnies. C’est bien gentil tout ça, mais en attendant, moi j’ai toujours un accès merdique à internet… et je continue de payer comme un âne.

Une de mes sources qui traine un peu dans ce milieu, m’indique même que les 3 principaux opérateurs français que sont Orange, SFR et Free, auraient eu quelques « discussions » à ce sujet, dont le leitmotiv était « Il faut faire payer Google donc travaillons ensemble dans ce sens« . Ça reste à prouver bien sûr mais nos petits FAI français ne semblent avoir peur de rien ni de personne et s’imaginent probablement faire plier le géant américain. Si Bouygues et Numéricable ne dégradent pas leur service, c’est peut être simplement parce qu’ils sont trop petits pour entrer dans le cadre des discussions avec les autres FAI ? Vas savoir…

Autre point stratégique qui pourrait expliquer pourquoi les FAI choisissent cette technique du pourrissage, c’est leur annonce de proposer des services de CDN (Content Delivery Network). Pour faire simple et compréhensible par tous, un CDN est un réseau de plusieurs serveurs répartis géographiquement qui fait office de relai (comme un cache) pour distribuer les données localement sans que l’internaute ai à les chercher à l’autre bout du monde. Plus de rapidité et moins d’engorgement pour tous. Ce genre de service comme Akamai ou Cloudfront d’Amazon est payant pour les fournisseurs de contenu. En se faisant CDN et en faisant payer très chère l’interconnexion (peering privé), les FAI auront bientôt tous les pouvoirs pour prendre en otage les fournisseurs de contenu. En effet, quel autre choix aurait par exemple Google, que de s’offrir les services de CDN de Free pour que l’accès à Youtube se fasse dans de meilleures conditions ? C’est déjà le cas en Angleterre et ça semble poser de vraies questions. Ce sera bientôt le cas en France avec SFR. Dans le cadre du débat autour de la neutralité du net, les députés français se sont d’ailleurs posés la question de la dangerosité de cette double casquette FAI / Fournisseur de contenu. Qui empêchera tel FAI de favoriser son propre contenu ou de dégrader celui des autres ?

Malin non ?

Orange a racheté Dailymotion il y a peu de temps, et l’on peut très bien imaginer qu’un jour, ils dégradent “involontairement” le service vers Youtube en offrant un meilleur accès à Dailymotion par le biais d’une connectivité directe (peering privé) ou transit IP “made in Orange”. Heureusement, je leur fais confiance et ça n’arrivera pas… Euuh attendez… ah si, Orange est bien dans le trio des FAI qui empêchent leurs abonnés d’avoir un accès normal à Youtube et demandent que les éditeurs passent à la caisse. Zut alors…

Bref, tout ça pour dire que :

  • Non, ce n’est pas normal que l’accès à Youtube soit dégradé de cette façon
  • Oui, les coupables sont bien les FAI qui ne font rien pour sortir de cette situation (en trouvant un accord avec Google pour upgrader l’interconnexion avec leur réseau par le biais du peering ou d’un routage du surplus de trafic via des opérateurs de transit IP)
  • Non, ce n’est pas aux abonnés de trinquer pour cette histoire de sous

Je le dis et je le répète, je paye un abonnement Internet pour avoir accès à Internet dans sa globalité et pas juste aux sites que m’autorisent Monsieur Free, Monsieur Orange ou Monsieur SFR. Laissons tomber les pétitions et les beaux discours et allons directement à la case protestation en saturant d’appels les supports techniques (et commerciaux!) de nos FAI d’amour pour gueuler !

  • SFR : 1077
  • Orange : 3900
  • Free : 3244

Il n’y a que comme ça que ça peut faire changer les choses. C’est déjà arrivé par le passé avecDailymotion qui annonçait sur sa homepage que le service était dégradé par SFR et qu’il fallait les contacter via la hotline, et bizarrement, depuis plus aucun problème.

abonnes neuf4 FAI   La stratégie du pourrissement

Il faut l’ouvrir, faire un peu de bruit et compter sur l’intelligence des FAI concernés qui se rendront compte forcement à un moment, que prendre en otage ses propres abonnés pour négocier avec Google, n’est pas une solution viable à long terme.

Source korben.info


4G : impossible de savoir ce que veut réellement Eric Besson

4G : impossible de savoir ce que veut réellement Eric Besson

Photo : Eric Besson, le nouveau ministre de l’Industrie, de l’Energie et de l’Economie numérique  (D.R.)

(Source EuroTMTC’est ce qui s’appelle faire plaisir à tout le monde. Que vous soyez opérateur de réseau, nouvel entrant, MVNO, autorité de régulation ou haut fonctionnaire de Bercy, vous avez pu vous satisfaire des propos tenus par Eric Besson, le nouveau ministre de l’Industrie, de l’Energie et de l’Economie numérique lors des Assises du numérique, réunies jeudi 25 novembre à Paris.

Dans son discours, Eric Besson a en effet indiqué, à propos de l’attribution des fréquences dans la bande des 800 MHz et 2,6 GHz destinées aux futurs réseaux 4G, qu’il « lancerait l’appel à candidatures pour l’utilisation de ces fréquences début 2011.» Cet appel à candidature devra répondre « à trois objectifs essentiels : la couverture des territoires, l’accroissement de la concurrence, et la valorisation du patrimoine immatériel de l’Etat ».

Pour mémoire, le débat fait rage au sein du gouvernement entre les tenants d’une ligne purement budgétaire et ceux qui souhaitent fixer des obligations. Les premiers veulent maximiser les revenus tirés de la vente des fréquences tandis que les seconds veulent établir des obligations en matière de concurrence ou de couverture des zones mal desservies par les réseaux à haut débit. Entre les deux, le ministre n’a donc pas pris position.

Car les trois objectifs qu’il a énoncés sont contradictoires. Si on veut imposer des contraintes, cela suppose de diminuer le prix de réserve des licences, et dès lors, d’être prêt à accepter de moindres …

rentrées pour le budget de l’Etat. En fait, la feuille de route proposée par le ministre correspond largement aux propositions faites par l’Arcep. Ainsi, si Eric Besson se prononce en faveur d’un découpage en quatre lots de la bande de fréquences 800 MHz, il s’agissait de l’une des deux propositions de découpage présentées par l’autorité de régulation des télécoms.

Sur le soutien à apporter aux MVNO, l’Arcep a aussi maintenu un indice multiplicateur des offres en fonction du degré d’ouverture des réseaux mobiles aux opérateurs virtuels. Seul problème, ce système a déjà été mis en oeuvre pour l’attribution des deux derniers lots de fréquences 3G récemment et il n’a pas incité les opérateurs mobiles à se montrer plus accueillants. D’où la crainte exprimée par Alternative Mobile, l’association des MVNO, de voir les opérateurs de réseaux continuer à leur refuser la possibilité d’évoluer vers un modèle de « full MVNO », qui leur permettrait une plus grande autonomie.

Concernant la couverture du territoire, l’Arcep a aussi proposé, pour les fréquences du dividende numérique, des contraintes fortes en matière de couverture des zones blanches. Il est donc impossible, à partir du discours du ministre, de savoir dans quel sens tranchera finalement Matignon.

A moins que le débat sur le prix de réserve des licences ne soit un faux débat. « Quel que soit le prix retenu, les opérateurs mobiles se porteront acquéreurs, car le portefeuille de fréquences détenu par chaque opérateur va devenir un véritable élément différenciant » explique ainsi un acteur, les équipements permettant maintenant de gérer plusieurs technologies sur la même fréquence.

Cela favoriserait les principaux opérateurs, à commencer par France Télécom. Les autres, comme Iliad, auront, peut-être, eux, intérêt à constituer un consortium (avec TDF par exemple) pour avoir accès à ces fréquences, tout en limitant leurs risques financiers.



La SNCF met sa relation client à la sauce Twitter

La SNCF met sa relation client à la sauce Twitter


Désormais, les clients de Voyages-sncf.com pourront se mettre en relation avec un conseiller via Twitter. Le voyagiste en ligne a en effet lancé un nouveau compte, Clt_Voyagessncf. Cet outil de communication sera disponible 7 jours sur 7, de 8h à 21h, pour tous les problèmes rencontrés par les voyageurs.

Voyages-sncf.com, premier e-voyagiste en France en termes de fréquentation, souhaite, via ce compte Twitter, répondre aux interrogations de ses clients, les accompagner à chacune des étapes de leur parcours et recueillir leurs suggestions sur le site.

La relation client du voyagiste en ligne continuera d’enrichir sa présence sur les réseaux sociaux d’ici l’été avec le lancement de l’agent virtuel LEA sur Facebook. Il y a quelques mois, La Poste avait fait de même en utilisant Twitter comme outil pour sa relation client.


Fibre optique : Bouygues Telecom, SFR et Free s’opposent à l’ARCEP

Hier, lors du colloque annuel organisé par l’ARCEP, les dirigeants de SFR, de Bouygues Telecom et de Free ont profité de la tribune qui leur était donnée pour critiquer le plan de déploiement de la fibre optique élaboré par le gouvernement. Ils estiment que la régulation délaisse la mutualisation et favorise France Télécom.

Fibre optique

Hier, lors de son colloque annuel qui avait pour thème « Croissance, innovation et régulation » l’ARCEP ne s’attendait pas à subir la fronde des trois concurrents de France TélécomEmmenés par Martin Bouygues, les trois opérateurs ont vivement critiqué la stratégie adoptée par le gouvernement pour le déploiement de la fibre optique en France.

Le plan fibre ambitionne de couvrir 57 % de la population en très haut débitd’ici 5 ans et d’atteindre les 100 % en 2025. Pour parvenir à cet objectif, l’Etat s’est engagé à investir 2 milliards d’euros. Quant aux modalités réglementaires, la France est le premier pays de l’Union Européenne à s’être doté d’un cadre juridique.

Martin Bouygues

Or, c’est ce cadre réglementaire, validé par le gouvernement, qui a essuyé un feu nourri de critiques. Le premier a s’être exprimé est Martin Bouygues, le président de Bouygues Telecom : « L’Etat a posé le principe de la concurrence par les infrastructures, quels que soient les réseaux. L’application de ce principe sur les réseaux fibres conduit en fait à instaurer une concurrence par l’investissement et les cash-flow.»

Selon lui, le cadre réglementaire favorise le déploiement de la fibre optique dans les zones les plus denses, c’est-à-dire dans les zones les plus rentables, délaissant ainsi les zones rurales. « France Télécom décide de déployer les villes rentables partout où des réseaux d’initiative publique départementaux se dessinent, ruinant ainsi la rentabilité globale du projet des collectivités locales. » a-t-il ajouté.

Plaidant pour sa paroisse, il a demandé à l’autorité de régulation d’avoir plus de temps avant d’investir dans la fibre afin de développer sa base de clients fixes. En effet, Bouygues Telecom est devenu un FAI il y a seulement deux ans et propose des solutions très haut débit en utilisant le réseau de Numericable.

Xavier Niel

Quant à Free et SFR, ils reprochent à l’ARCEP de ne pas favoriser la mutualisation. Xavier Niel estime que « 500 millions d’euros sont gaspillés chaque année[…] car chacun déploie son réseau à coté des autres » et Jean-Bernard Lévy, président du directoire de Vivendi, groupe qui possède SFR, qualifie le cadre réglementaire « d’absurdité », en expliquant que l’on déploie «  un réseau ferré avec des voies différentes pour chaque sociétés de transport. »

Par ailleurs, il a rappelé que SFR « propose depuis plus d’un an la mise en place d’une infrastructure commune avec France Télécom, ouverte à tous les opérateurs et organismes financiers qui souhaitent investir dans les réseaux de demain »

En s’exprimant ainsi, les trois rivaux de France Télécom se positionnent clairement du côté de l’avis de l’Autorité de la concurrence. Cette dernière invite l’ARCEP à réfléchir à une séparation fonctionnelle de France Télécom qui couperait l’opérateur historique en deux entités, une gérant le réseau et l’autre les offres commerciales.

Les propositions des trois opérateurs sont restées lettres mortes puisque d’après nos confrères du journal Les Echos, Stéphane Richard n’était plus dans la salle pour répondre à ses homologues.


IPv6 : une migration entre promesses et craintes

Technologie – Solution à la pénurie d’adresses, IPv6 annonce aussi une simplification des réseaux, une meilleure gestion de la sécurité et de la qualité de service, et de nouvelles applications. Ces promesses font toutefois l’objet de vifs débats.

Vers une simplification des infrastructures

Pour éviter la pénurie d’adresses IPv4, opérateurs et entreprises utilisent depuis plus de dix ans des mécanismes de translation entre des adresses privées et publiques. C’est la technologie NAT (Network Adress Translation). « Les opérateurs mobiles doivent garder en rétention toutes les translations afin d’archiver les connexions des utilisateurs, c’est un véritable casse-tête », note ainsi Nicolas Fischbach, directeur en charge de la stratégie et de l’architecture réseau chez Colt.

Cela vaut aussi pour les entreprises multisites, contraintes de gérer différents plans d’adressage. En théorie, IPv6 promet la suppression du NAT, donc la simplification des infrastructures qui deviendront plus faciles à faire évoluer et à administrer. En fait, il existe encore un débat, certains défendant l’idée que le NAT sera conservé grâce à sa capacité à segmenter réseaux privés et publiques à des fins de sécurité.

Sécurité : entre réalité et quiproquo

« Le NAT apporte autant de sécurité que la ligne Maginot en 1940, la solution est dans la mise en oeuvre de systèmes fiables », lance Alexandre Cassen, directeur R&D et nouvelles technologies chez Free. Les échos sont les mêmes dans les rares entreprises ayant déployé IPv6.

TBS-Internet, qui propose des services d’infogérance, a ainsi supprimé le NAT mais a installé deux firewalls par PC, respectivement pour IPv4 et IPv6. « L’argument selon lequel NAT est une protection est faux car cela ne dispense pas de mettre sur les PC des firewalls, dont l’efficacité est suffisante », explique Jean-Philippe Donnio, PDG de TBS-Internet.

Chez France Telecom, on est du même avis, d’autant que la translation pose des problèmes justement liés à la sécurité. « IP-Sec traversant mal le NAT, nous devons allouer des adresses IPv4 publiques pour nos offres 3G destinées aux entreprises », explique Christian Jacquenet, directeur du programme IPv6 pour le groupe France Telecom. Le NAT est d’autant moins nécessaire qu’IPv6 implémente des mécanismes alternatifs comme les adresses locales non routables. « Elles seront utilisées pour les systèmes les plus critiques », affirme Nicolas Scheffer, responsable marché, infrastructures et développement IPv6 chez Cisco.

IPv6 introduira de nouvelles vulnérabilités

Il existe en outre un quiproquo sur la sécurité que procurerait l’intégration dans IPv6 du protocole de chiffrement IP-Sec. En fait, il faudra toujours activer ce chiffrement et mettre en place des mécanismes d’échanges de clés. « Ce sera juste plus facile à administrer », affirme Jean-Marc Chartres, consultant chez Telindus. Les éditeurs seront toutefois plus enclins à intégrer le chiffrement dans leurs logiciels. « Un service comme Skype chiffrera sans imposer l’installation d’un client VPN », cite Dimitri Desmidt, technical marketing engineer chez A10 Networks.

Parallèlement, IPv6 réduira certaines vulnérabilités mais en introduira d’autres. Ainsi, il résistera mieux à des attaques reposant sur des bases de scanning car il y aura bien plus d’adresses à scanner. A l’inverse, les systèmes de sécurité basés sur la réputation seront à revoir car les spammeurs changeront facilement d’adresse. Et comme pour IPv4, de nouvelles vulnérabilités apparaîtront. « Il faudra les prendre en compte en amont dans les politiques de sécurité », conseille Christian Pétrus, chef de produits IPv6 chez OBS. En somme, la cohabitation des deux protocoles doublera l’effort de gestion de la sécurité.

Qualité de service : une amélioration induite

La suppression du NAT devrait réduire la latence, voire augmenter un peu les débits. Mais IPv6 n’entraîne pas en soi d’amélioration de la qualité de service, qui relèvera toujours du « best effort ». Avec IPv4, il est déjà possible de mettre en oeuvre des mécanismes de priorisation des flux. Même si les labels de flux sont intégrés dans l’en-tête IPv6, ces mécanismes ne changent pas et devront toujours être pris en compte par les applications.

La possibilité de conserver la même adresse permettra une généralisation d’applications bidirectionnelles ou à l’initiative des serveurs, en mode push. Les applications mobiles seront les premières concernées. « L’auto-configuration sera totale et on pourra conserver le contexte et les communications n’importe où sur Terre », précise Nicolas Scheffer.

Support de nouvelles applications

De plus, IPv4 n’a pas été écrit pour les communications temps réel de bout en bout. Même entre des sites fixes, IPv6 sera donc largement déployé dans le cadre de communications unifiées, surtout dans de grands projets internationaux. « Le processus sera lent car peu d’applications sont écrites nativement en IPv6 », regrette toutefois Jean-Marc Chartres.

De même, les offres cloud auront besoin de nombreuses adresses que seul IPv6 fournira. On en revient à une question d’espace d’adressage dont l’immensité ouvrira la voie à la connexion tous azimuts de terminaux et objets variés, accompagnée de leur cortège d’applications, notamment machine to machine (M2M).


Le langage SQL

Le SQL (Structured Query Language) est un langage informatique normalisé qui sert à effectuer des opérations sur des bases de données. La partie langage de manipulation de données de SQL permet de rechercher, d’ajouter, de modifier ou de supprimer des données dans les bases de données.

En plus du langage de manipulation de données, la partie langage de définition de données permet de créer, et de modifier l’organisation des données dans la base de données, la partie langage de contrôle de transaction permet de commencer et de terminer des transactions, et la partie langage de contrôle de données permet d’autoriser ou d’interdire l’accès à certaines données à certaines personnes.

Dans le concret, comment ça marche ?

Reprenons notre exemple :

Nous allons modéliser ces données dans ce que l’on appel un modèle logique des données (MLD) :

COMMANDE (NCOM,DATECOM,#NCLI)

CLIENT (NCLI,NOM,ADRESSE,LOCALITE)

DETAILS (#NCOM,#NPRO,QCOM)

PRODUITS (NPRO,LIBELLE,PRIX)

Le modèle logique des données sert à modéliser par ligne une table d’une base de données comme ci-dessus, vous n’avez pas besoin de construire une base de données donc ne nous attardons pas là-dessus. Par contre, on va regarde en détails les champs (cette fois ci ce son des champs car nous sommes en base de données cf commentaire de charlotte).

Les champs soulignés sont les clés primaires de la table : la clé primaire est unique et fait référence à une table.
Les champs avec un # sont des clés étrangères : elles sont référence à une autre table (une clé étrangère est une clé primaire d’une autre table)

Ces clés lient les tables entres elles et vont nous permettre d’utiliser le langage de requête SQL.

Les commandes :

La commande la plus basique en SQL est la commande SELECT. Elle permet de pouvoir sélectionner les données de tables d’une base de données.

Syntaxe : SELECT « nom de colonne » FROM « nom de table »
En Français : Sélectionner « telle colonne » DE « telle table »

Exemple : Nous allons sélectionner tous les noms de clients contenus dans la table client.

SELECT NOM FROM CLIENT ;

Le résultat que nous aurons sera la liste des noms classés par nom dans un tableau simple :

NOM
GILLET
xxxxxx
xxxxxx

C’est une commande simple, basique du SQL qu’il est impératif de bien comprendre !

Ensuite, le DISTINCT, très simple. Comment devons-nous procéder pour ne sélectionner que des éléments distincts?
Tout ce dont nous avons besoin est d’ajouter DISTINCT après SELECT.

Syntaxe : SELECT DISTINCT « nom de colonne » FROM « nom de table »
En Français : Sélectionner de façon distinct « telle colonne » DE « telle table »

Exemple : Nous allons sélectionner la liste des dates de bons de commande dans la table COMMANDE. Pour une entreprise il n’est pas nouveau, au contraire, d’avoir plusieurs commande par jour, la commande DISTINC va regrouper les dates pour éviter les doublons.
Imaginons donc que nous avons 4 commandes en date du 02/01/2009 :

Avec un select simple nous aurons :

SELECT DATECOM FROM COMMANDE ;

DATECOM
02/01/2009
02/01/2009
02/01/2009
02/01/2009
05/10/2009

Avec un DISTINCT :

SELECT DISTINCT DATECOM FROM COMMANDE ;

DATECOM
02/01/2009
05/10/2009

Autre commande très importante : la clause WHERE.

Il est aussi possible et très courant de sélectionner conditionnellement les données d’une table. En utilisant la clause WHERE, nous allons pouvoir ajouter une condition à la sélections des données comme par exemple sélectionner les produits dont le prix de vente est supérieur à 200€ pour notre exemple.

Syntaxe : SELECT « nom de colonne » FROM « nom de table » WHERE « condition »
En Français : Sélectionner « telle colonne » DE « telle table » (quand, pour laquelle la valeur est) « condition »

Exemple : nous allons les produits par nom et prix dont le prix de vente est supérieur à 200 €

SELECT LIBELLE,PRIX FROM PRODUITS
WHERE PRIX > 200;

LIBELLE PRIX
CHEV.SAPIN 400x6x4 220
PL.HETRE 200x20x2 230

Puisque nous avons commencé à utiliser des chiffres, la question qui nous vient à l’esprit naturellement est de nous demander s’il est possible d’effectuer des calculs arithmétiques avec ces chiffres, tels que l’addition ou le calcul de la moyenne. La réponse est oui ! SQL dispose des fonctions arithmétiques suivantes :

AVG = Moyenne
COUNT = Compte chaque enregistrement du champ specifié
MAX = Donne la valeur maximale du champ spécifié
MIN = Donne la valeur minimale du champ spécifié
SUM = Exécute une somme des valeurs du champ spécifié

Bien sur, nous avons les signes classiques arithmétiques :

– =

– <

– >

– <> (different)

Complément à ces conditions :

Nous avons vu que le mot-clé WHERE peut s’utiliser pour sélectionner conditionnellement des données d’une table. Cette condition peut être une condition simple (comme celle de la section précédente), ou combinée. Les conditions combinées se constituent de plusieurs conditions simples connectées par AND ou OR. Une seule instruction SQL peut contenir un nombre illimité de conditions simples.

Syntaxe : SELECT « nom de colonne » FROM « nom de table » WHERE AND / OR « condition »

En Français : Sélectionner « telle colonne » DE « telle table » (quand, pour laquelle la valeur est) « condition » ET « condition »

Exemple : Nous allons sélectionner le champ nom de la table client pour le client GILLET.

SELECT NOM FROM CLIENT
WHERE NOM=’GILLET’;

NOM
GILLET

Le mot clé IN.

Deux utilisations du mot-clé IN sont possibles dans SQL, et cette section décrit celle qui est relative à la clause WHERE. Utilisé dans ce contexte, ce mot clé nous permet de connaître exactement la valeur des valeurs retournées que nous souhaitons voir au moins pour l’une des colonnes.

On peut la traduire en Français par « fait partie de »

Syntaxe : SELECT « nom de colonne » FROM « nom de table » WHERE « nom de colonne » IN (‘valeur1’, ‘valeur2’, …)

En Français : Sélectionner « telle colonne » DE « telle table » (quand, pour laquelle la valeur est) « nom de colonne » (fait parti de) (‘valeur1’, ‘valeur2’, …)

Exemple : Nous allons utiliser un autre exemple car, le peu de données dans notre base d’exemple se prête difficilement au jeu.

Sélectionner tous les enregistrements des magasins de Los Angeles et de San Diego dans la Table Store_Information,

Table Store_Information

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
San Diego

250 €

07-Jan-1999
San Francisco

300 €

08-Jan-1999
Boston

700 €

08-Jan-1999

il faut saisir :

SELECT * FROM Store_Information WHERE store_name IN (‘Los Angeles’, ‘San Diego’);

Résultat :

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
San Diego

250 €

07-Jan-1999

Alors que le mot-clé IN aide les utilisateurs à limiter le critère de sélection à une ou plusieurs valeurs distinctes, le mot-clé BETWEEN permet de sélectionner un intervalle.

Syntaxe :SELECT « nom de colonne » FROM « nom de table »WHERE « nom de colonne » BETWEEN ‘valeur1’ AND ‘valeur2’

Sélectionner « telle colonne » DE « telle table » (quand, pour laquelle la valeur est comprise entre) « valeur 1 » ET « valeur2 »

Cette instruction sélectionnera toutes les lignes dont les colonnes ont une valeur comprise entre ‘valeur1’ et ‘valeur2’.

Exemple :

pour visualiser toutes les informations de vente comprises entre le 6 janvier 1999 et le 10 janvier 1999 dans la Table Store_Information,

SELECT * FROM Store_Information WHERE Date BETWEEN ’06-Jan-1999′ AND ’10-Jan-1999′

Résultat :

store_name Sales Date
San Diego

250 €

07-Jan-1999
San Francisco

300 €

08-Jan-1999
Boston

700 €

08-Jan-1999

Le LIKE est un autre mot-clé utilisé dans la clause WHERE.LIKE permet d’effectuer une recherche basée plutôt sur un modèle qu’une spécification exacte de ce qui est souhaité (comme dans IN) ou une définition d’un intervalle (comme dans BETWEEN). On peut la traduire en Français par « ressemble à » :

Syntaxe : SELECT « nom de colonne » FROM « nom de table » WHERE « nom de colonne » LIKE {modèle}

{modèle} représente souvent des caractères de remplacement. Voici quelques exemples :

  • ‘A_Z’ : toutes les chaînes commençant par ‘A’, ou un autre caractère, et terminant par ‘Z’. Par exemple, ‘ABZ’ et ‘A2Z’ satisferaient la condition, alors ‘AKKZ’ ne le ferait pas (car il y a deux caractères entre A et Z au lieu d’un).
  • ‘ABC%’ : toutes les chaînes commençant par ‘ABC’. Par exemple, ‘ABCD’ et ‘ABCABC’ satisferaient la condition.
  • ‘%XYZ’ : toutes les chaînes terminant par ‘XYZ’. Par exemple, ‘WXYZ’ et ‘ZZXYZ’ satisferaient la condition.
  • ‘%AN%’ : toutes les chaînes contenant le modèle ‘AN’ quelle que soit sa position. Par exemple, ‘LOS ANGELES’ et ‘SAN FRANCISCO’ satisferaient la condition.

Toujours sur notre table Store_Information

store_name Sales Date
LOS ANGELES

1500 €

05-Jan-1999
SAN DIEGO

250 €

07-Jan-1999
SAN FRANCISCO

300 €

08-Jan-1999
BOSTON

700 €

08-Jan-1999

Pour rechercher tous les magasins dont le nom contient ‘AN’, il faut saisir :

SELECT *
FROM Store_Information
WHERE store_name LIKE ‘%AN%’;

Résultat :

store_name Sales Date
LOS ANGELES

1500 €

05-Jan-1999
SAN DIEGO

250 €

07-Jan-1999
SAN FRANCISCO

300 €

08-Jan-1999

Nous allons maintenant voir la clause ORDER BY.
Jusqu’à présent, nous avons vu comment extraire des données d’une table à l’aide des commandes SELECT et WHERE. Il convient souvent de lister les résultats dans un ordre particulier. Le classement peut se faire dans un ordre ascendant ou descendant, ou peut être établi par des valeurs saisies en chiffres ou en lettres. Dans de tels cas, il est possible d’utiliser le mot-clé ORDER BY pour atteindre notre objectif.

La syntaxe d’une instruction ORDER BY est comme suit :

Syntaxe : SELECT « nom de colonne » FROM « nom de table » [WHERE « condition »] ORDER BY « nom de colonne » [ASC, DESC]

Les crochets [] signifient que l’instruction WHERE est optionnelle. Toutefois, si une clause WHERE est déjà présente, elle se trouvera devant la clause ORDER BY. La clause ASC ou DESC provoque respectivement un tri des résultats dans un ordre ascendant ou descendant. En cas d’omission de l’une d’elles, la clause ASC est implicitement appelée, provoquant donc un tri en ordre ascendant par défaut.

Il est possible d’ordonner par plusieurs colonnes. Dans ce cas, la clause ORDER BY ci-dessus devient :

ORDER BY « nom de colonne 1 » [ASC, DESC], « nom de colonne 2 » [ASC, DESC]

Supposons que nous avons choisi l’ordre ascendant pour les deux colonnes, la colonne de sortie sera classée dans un ordre ascendant selon la colonne 1. S’il y a une liaison pour la valeur de la colonne 1, le tri se fera dans un ordre ascendant selon la colonne 2.

Par exemple, pour trier les contenus de la Table Store_Information par montant en dollar, dans un ordre descendant :

Table Store_Information

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
San Diego

250 €

07-Jan-1999
San Francisco

300 €

08-Jan-1999
Boston

700 €

08-Jan-1999

Il faut saisir :

SELECT store_name, Sales, Date
FROM Store_Information
ORDER BY Sales DESC;

Résultat :

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
Boston

700 €

08-Jan-1999
San Francisco

300 €

08-Jan-1999
San Diego

250 €

07-Jan-1999

En plus du nom de colonne, il est également possible d’utiliser une position de colonne (basée sur la requête SQL) pour indiquer la colonne à laquelle nous souhaitons appliquer la clause ORDER BY. La première colonne est 1, la seconde 2, et ainsi de suite. Dans l’exemple précédent, il serait possible d’obtenir les mêmes résultats en utilisant la commande suivante :

SELECT store_name, Sales, Date
FROM Store_Information
ORDER BY 2 DESC;

Nous passons maintenant aux fonctions d’agrégation. Vous souvenez-vous que nous avons utilisé le mot-clé SUM pour calculer les ventes totales de tous les magasins ? Comment pouvons-nous calculer les ventes totales de chaque magasin ? Bien, il y a deux manières : tout d’abord, il est nécessaire de s’assurer d’avoir sélectionné le nom de magasin, ainsi que les ventes totales. Ensuite, tous les chiffres d’affaires doivent êtregroupés par (grouped by) par par magasin. La syntaxe SQL correspondante est :

Syntaxe : SELECT « nom de colonne 1 », SUM(« nom de colonne 2 »)
FROM « nom de table »
GROUP BY « nom de colonne 1 »

Illustrons ce cas de figure à l’aide de la table suivante :

Table Store_Information

store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999

Pour retrouver les ventes totales de chaque magasin, il faut saisir :

SELECT store_name, SUM(Sales) FROM Store_Information
GROUP BY store_name;

Résultat :

store_name SUM(Sales)
Los Angeles 1800 €
San Diego 250 €
Boston> 700 €

Le mot-clé GROUP BY s’utilise lorsque diverses colonnes d’une ou de plusieurs tables sont sélectionnées et qu’un opérateur arithmétique au moins apparaît dans l’instruction SELECT. Nous devons, le cas échéant, regrouper (GROUP BY) toutes les autres colonnes sélectionnées, c’est-à-dire, toutes les colonnes sauf celle(s) utilisée(s) par l’opérateur arithmétique.

Point Très important, les jointures ! Il faut, comme le SELECT, le maitriser et le comprendre.

Pour définir correctement des jointures sous SQL, il faudra se reporter à la plupart des éléments que nous avons exposés jusqu’à présent. Supposons que nous avons les deux tables suivantes :

Table Store_Information

store_name Sales Date
Los Angeles

1500 €

05-Jan-1999
San Diego

250 €

07-Jan-1999
Los Angeles

300 €

08-Jan-1999
Boston

700 €

08-Jan-1999

Table Geography

region_name store_name
East Boston
East New York
West Los Angeles
West San Diego

Nous souhaitons connaître les ventes par région. La table Geography comprend des informations sur des régions et magasins, et la table Store_Information contient des données relatives aux ventes de chaque magasin. Afin d’obtenir les informations sur les ventes par région, il faut combiner les informations des deux tables. En examinant les deux tables, nous constatons qu’elles sont mises en relation par le champ commun « store_name » (qui est clé primaire et etrangere). Nous allons d’abord décrire l’instruction SQL, puis expliquer l’utilisation de chaque segment :

SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name

Résultat :

REGION SALES
East

700 €

West

2050 €

Les deux premières lignes permettent à SQL de sélectionner deux champs : le premier est le champ « region_name » de la table Geography (dont l’alias est REGION), et le second est la somme du champ « Sales » de la table Store_Information (dont l’alias est SALES). Notez comment les alias de tables sont utilisés ici : A1 est l’alias de Geography et A2 de Store_Information. Sans l’alias, la première ligne deviendrait :

SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES

ce qui n’est pas très concis. Par essence, les alias de table sont destinés à faciliter la compréhension des instructions SQL, surtout en présence de plusieurs tables.

Nous passons maintenant à la ligne 3 (à l’instruction WHERE). C’est là où se spécifie la condition de la jointure. Dans ce cas, pour nous assurer que le contenu dans « store_name » de la table Geography corresponde à celui de la table Store_Information, il faut les définir comme valeur égale. L’instruction WHERE est essentielle pour obtenir une requête correcte. Sans l’instruction WHERE appropriée, nous obtiendrons une jointure cartésienne. Les jointures cartésiennes retournent toute combinaison possible des deux tables (ou tout nombre de tables indiqué dans l’instruction FROM). Une jointure cartésienne retournerait donc un résultat d’un total de 4 x 4 = 16 lignes.

Voila ! C’est fini pour la partie SQL ! J’imagine que tout n’est pas bien clair donc vous pouvez poser vos questions.
Dans le prochain article, je vais reprendre tout une série d’exemples à partir de vos cours.


Hadopi au point mort

Il n’y a pas que Sony qui a des soucis pour sécuriser ses données, il y a aussi TMG. Oui,Trident Media Guard, la société chargée de collecter les d’adresses IP pour le compte d’Hadopi, vient de suspendre provisoirement ses activités, suite à une fuite de données dans un serveur de test ! C’est bluetouff, un blogueur qui est à l’origine de ces révélations du week-end dernier. Minimisant l’importance de la faille, MG devrait donc faire l’objet de plusieurs expertises avant la reprise de ses activités.


Introduction aux bases de données relationnelles

*En informatique, une base de données est un lot d’informations stockées dans un dispositif informatique. Les technologies existantes permettent d’organiser et de structurer la base de données de manière à pouvoir facilement manipuler le contenu et stocker efficacement de très grandes quantités d’informations. wikipédia *

Peu importe le support utilisé pour rassembler et stocker les données (papier, fichiers, etc.), dès lors que des données sont rassemblées et stockées d’une manière organisée dans un but spécifique, on parle de base de données.

Pour introduire un système de base de données relationnel, nous pouvons nous demander en dans un premier comment faisait-on avant ?

Autrefois, les informations étaient stockées de manière physique et souvent complexe à organiser et à retrouver.
Comme sur l’image suivante, nos bases de données étaient de très vastes espaces de stockage des ouvrages, l’information était donc quelque part par là … Bien qu’une bonne organisation du rangement facilitait la recherche grâce à un classement par nature connexes (exemple : Type, style, auteur …), le temps pour retrouver une information était long et nécessitait une intervention humaine qualifiée. Comme une gigantesque bibliothèque !

Constat :

– Nous baignons dans un tourbillon d’informations

– Nous recevons des informations de notre environnement

– Nous transmettons des informations à notre environnement

– Les informations prennent la forme de données (signes mémorisés et

Véhiculés sur un support matériel ou immatériel)

Question : comment stocker, partager et traiter ces données ?

Réponse : – Autrefois dans une bibliothèque (ancienne forme de base de données),
– Aujourd’hui dans une base de données


Une BD sans informatique est constituée:

  • d’un ensemble de fichiers,
  • des liens logiques entre ces fichiers.

Chaque fichier est composé d’une collection de fiches. Une fiche comporte un ou plusieurs renseignements sur un élément (objet ou personne) de la BD. Chacun de ces renseignements (appelés aussi champs) est une information indivisible.

Base de données avec informatique :

La définition d’une BD est la même que précédemment. Par contre, les concepts utilisés en informatique sont un peu différents. Ces derniers dépendent du modèle de représentation des données considéré. Dans le cadre de ce cours, nous considérerons le modèle relationnel . Dans ce modèle, une BD est définie par:

  • un ensemble de tables (Ex: une table pour les vols; tel vol part de tel aéroport à telle heure, arrive à tel autre aéroport à telle heure, a tel équipage, sur tel avion, etc.). Une table est une collection d’articles (Ex: un vol). Un article est un recueil de champs. Un champ est une information atomique (Ex: code d’un vol).
  • un ensemble de relations entre ces tables (Ex: tel pilote assure tel vol)

Petite illustration :

Une fiche client autrefois (ou sans informatique) :

  • Nous avons toute une suite d’informations qui nous permettent d’identifier de façon détaillée un client, une commande et un produit (numéro de client, commande n°, n° produit).
  • Nous avons des liens entre ce client et cette commande
  • Nous avons un état du stock de produit, la somme du chiffre d’affaire réalisé.

Alors, comment les ranger dans un ordinateur ?

Plusieurs solutions s’offrent à nous.

Précédemment, nous avons vus qu’une base de données était constituée de table avec des liens entre elles (basiquement!). Nous allons donc rester dans notre exemple du client GILLET, et réorganiser tout ça par tableaux.

Nous avons donc dans ce cas quatre tableaux qui chacun designent une entité de notre bon de commande :

– Les données de la commande (numéro de commande, numéro du client qui a passé la commande, date de la commande)

– Les données client (numéro de client, nom, adresse, localité)

– Les données des détails (Numéro de la commande, numéro du produit, quantité commandée)

– Les données des produits (Numéro du produit, Libelle du produit, son prix)

Quelles sont ces couleurs ? Nous avons sous les yeux les liens qui lient les tableaux entre eux …

Autrement appelé des clés primaires et étrangères !!

Définitions :

Chaque enregistrement doit pouvoir être identifié de manière unique. La clé primaire d’une table doit se placer sur des champs qui permettent d’identifier chaque ligne de la table.
Dans notre cas, le numéro de commande est clé primaire de la table commande (elle identifie par un code une commande et une seule ! )

Une clé étrangère identifie une colonne d’une table comme référence d’une colonne d’une autre table (la table référencée). Une contrainte de clé étrangère permet ainsi d’établir des liens entre plusieurs tables.

Dans notre cas, restons toujours sur le champ numéro de commande :
Il est présent en qualité de clé étrangère de la table détails. Il pourra nous servir à effectuer une requête dans la table détails en spécifiant un numéro de commande hébergé dans la table commande.

* L’ensemble constitué d’une clé primaire et d’une clé étrangère sert à établir des relations entre tables. Il s’agit d’un des principes fondamentaux des bases de données relationnelles.*

Donc, Tables composées de champs + relations entre elles … ça ressemble à nos tableaux et nos couleurs ! On ajoute des données (ajouts de clients, de commandes, de produits), et voila, nous avons notre base de données !

– Une base de données est constituée d’un ensemble de tables.

– Chaque table contient les données relatives à des entités de même nature.

– Chaque ligne d’une table reprend les données relatives à une entité.

– Chaque colonne d’une table décrit une propriété commune des entités.

– Les lignes d’une table sont distinctes. C’est sur une (voire plusieurs) colonne(s) que se joue cette unicité. Le jeu de colonnes dont les valeurs sont uniques constitue un Identifiant de la table.

– Les lignes d’une table peuvent faire référence chacune à une ligne d’une autre table, où des informations sur une entité associée peuvent être obtenues. Les colonnes de référence s’appellent clé étrangère vers cette autre table.

Maintenant, que peut-on faire de ces données ?

  • Vérifier une commande lors de son enregistrement : le client est-il connu ? son adresse a t-elle changé ? les produits commandés sont-ils répertoriés ?
  • Produire les factures
  • Calculer le chiffre d’affaire mensuel
  • Etudier la répartition géographique des ventes
  • Préparer le rapprovisionnement des produits en rupture de stock


..
.

Comment est représentée une base de données ?


Nous abordons la partie concept de la base de données que nous survolerons car le but n’étant pas que vous soyez des pros de la BDD en details car la partie SQL va nous prendre pas mal de temps !
J’ai emprunté à notre amis Wikipédia son article sur les concepts de la base de données qui est très bien illustré.

De manière générale, un schéma conceptuel est une représentation d’un ensemble de concepts reliés sémantiquement entre eux. Les concepts sont connectés par des lignes fléchées auxquelles sont accolés des mots. La relation entre les concepts s’appuie sur des termes exprimant celle-ci : « mène à », « prévient que », « favorise », etc.

Le schéma conceptuel poursuit plusieurs buts. Il construit la représentation mentale d’une situation, que cette dernière soit personnelle, celle d’un groupe ou encore celle d’une organisation. Il permet de résumer la structure synthétique d’une connaissance construite à partir de sources diverses.

L’ajout d’objets de support : diagrammes, rapports, autres schémas, feuille de calcul, etc., durant l’élaboration des schémas aide l’apprenant à augmenter la quantité et la qualité des informations ainsi apprises. C’est en raison de cet effet positif sur l’apprentissage qu’au xxie siècle des pédagogues ont commencé à utiliser ce type de schéma dans le cadre de leur cours.

En informatique, un schéma conceptuel est une représentation graphique qui sert à décrire le fonctionnement d’une base de données. Il représente ainsi les objets principaux contenus dans cette dernière, leurs caractéristiques et les relations qui s’établissent entre ces différents objets. Cette représentation est normée suivant une modélisation bien définie.

Le modèle entité-relation (encore appelé modèle Entité / Association) est un type de schéma conceptuel très utilisé pour les bases de données, notamment les bases de données relationnelles.

Concepts

Il s’agit d’un outil permettant de décrire le fonctionnement de la base de données en notifiant :

  • Les entités
    • Ce sont des objets concrets (livre, individu) ou abstraits (compte bancaire) que l’on peut identifier.
    • On peut représenter un ensemble d’entités de la réalité par une entité type (un élève pour l’ensemble des élèves).
    • Ces entités sont caractérisées par leurs attributs (pour l’élève : classe, nom …). Parmi ces attributs, on définit un identifiant qui va permettre de caractériser de façon unique l’entité dans l’ensemble (pour l’élève, ses nom et prénom peuvent jouer ce rôle).
  • Relations entre les entités
    • Elles représentent les liens existant entre une ou plusieurs entités.
    • Elles sont caractérisées par un nom, une propriété d’association et éventuellement des attributs.
  • Degré de relation et cardinalité
    • Le degré de la relation (ou dimension de la relation) est le nombre d’entités qui sont impliquées dans cette relation. La relation peut ne faire intervenir qu’une seule entité, auquel cas elle est dite réflexive.

Exemple d’une relation réflexive : la relation ‘de mariage’

  • La cardinalité (d’une entité par rapport à une relation) exprime le nombre de participations possibles d’une entité à une relation. Comme c’est un nombre variable, on note la cardinalité minimum (0 ou 1) et maximum pour chaque entité. Par exemple, dans une bibliothèque, un usager peut emprunter 0 ou N livres, mais le livre ne peut être emprunté que par 0 ou 1 usager.
  • Les entités sont représentées dans des rectangles et s’écrivent en lettres majuscules.
  • L’identifiant d’une entité (clé primaire) est le premier attribut cité et est souligné. Les autres attributs sont placés à la suite.
  • Les relations sont placées dans des ellipses ou des losanges avec leurs attributs respectifs.
  • Les cardinalités sont placées à côté de l’entité qu’elles caractérisent.
  • Les clés étrangères n’apparaissent pas dans l’entité où elle n’est pas la clé primaire.

En Français, ce MCD nous donne :
« Un client peut commander zéro ou plusieurs produits (0,n) et un produit peut être commandé par un seul client ou plusieurs(1,n). »

Exercice :

Avez-vous tout bien compris ? Essayez de créer le MCD de la base de données citée en exemple au début avec ses quatre tables :

Voici une méthode possible pour réaliser un schéma entité/relation :

  1. Etablir la liste des entités (fait)
  2. Déterminer les attributs de chaque entité en choisissant un identifiant
  3. Etablir les relations entre les différentes entités
  4. Déterminer les attributs de chaque relation et définir les cardinalités

Dans un prochain article, nous introduirons le langage SQL et son utilisation dans une base de données relationnelle.

N’hésitez pas si vous avez des questions.


L’histoire de Skype

Récemment racheté par Microsoft, cette infographie tombe à point nommé en retraçant l’histoire de Skype.
Pour rappel, Skype est un logiciel qui permet aux utilisateurs de passer des appels téléphoniques via Internet.


Bug des SMS : Orange attaque Bouygues Telecom

Suite au bug des SMS de la nuit de la Saint Sylvestre, qui a provoqué des envois massifs de SMS chez les abonnés Orange Mobile, l’opérateur historique a décidé d’assigner Bouygues Telecomen justice.


Comme chaque année à l’occasion du nouvel an, les opérateurs battent des records d’envoi de SMS. Mais cette année, si la barre des 950 millions de textos a été atteinte ce n’est pas dû qu’au goût prononcé des Français pour l’Internet mobile et les smartphones mais aussi en raison d’un bug informatique.

Bouygues Telecom

Dans la nuit du 31 décembre 2010 au 1er janvier 2011, les abonnés Orange Mobile ont ont vu leur facture de SMS/MMS flamber en raison d’envois de SMS démultipliés. Dans les jours qui ont suivi, Orange accusait Bouygues Telecom d’être à l’origine de ce dysfonctionnement. Selon, le Figaro, le bug serait dû à une panne d’équipements de Bouygues Telecom« déclenchant une multitude d’incidents techniques en cascade. »
Homme en colère Mobile
Estimant que cet incident a nui à son image, Orange a décidé de porter plainte devant le tribunal de commerce de Paris. « Il s’agit d’une assignation de Bouygues Telecom dans une procédure à bref délai pour les graves préjudices subis. » a déclaré un porte-parole de France Télécom.

Bouygues confirme cette information, mais s’est refusé à tout commentaire.