Aller au contenu

Reivax

Membre de bronze
  • Compteur de contenus

    64
  • Inscription

  • Dernière visite

  • Jours gagnés

    1

Tout ce qui a été posté par Reivax

  1. Reivax

    SQL(2) : LDD et Wamp

    j'avouerai ne rien connaître à postgreSQL. Après ce petit tuto donne des bases suffisantes je pense aussi bien pour Oracle, Mysql ou PostGreSQL. Même si chacune de ces bases de données possèdent quelques différences les bases sont les même.
  2. Reivax

    SQL(2) : LDD et Wamp

    je l'ai choisi car gratuit et facile d'accès quand on débute. Présenter une base de donnée Oracle aurait été pas mal... Mais très difficile d'accès, et un peu inutile pour la plupart des gens. Mais cependant ce tuto est valable aussi pour oracle en grande partie (mis à part quelques différences côtés LDD). D'ailleurs je suis bien plus familier avec Oracle qu'avec Mysql
  3. Reivax

    SQL(2) : LDD et Wamp

    Super, merci pour l'info
  4. Ce jeu est super ! Il y a tellement de moyen de jouer de manière différentes ! Discret, bourrin, charmeur ! Je le conseille fortement et surtout la version moddé qui rajoute pas mal de chose et corrige certain bug :). Un très bon RPG !
  5. Reivax

    SQL(2) : LDD et Wamp

    Attention à Skype ! Skype bloque l'utilisation de wampserver car skype utilise un port qu'Apache utilise aussi ! (apparemment le port 80). Donc pour utiliser wampserver il faut soit changer le port par défaut en 8080 soit couper skype (la deuxième solution est la meilleure, skype n'a pas a bloquer ce port scrogneugneu !)
  6. Reivax

    SQL(1) : Base de donnée

    Je ne connais pas l'AJAX. En recherchant vite fait j'ai trouvé un tuto sur openclassroom : https://openclassrooms.com/courses/dynamisez-vos-sites-web-avec-javascript/l-ajax-qu-est-ce-que-c-est Si cela peut t'aider ! Par contre ce n'est pas vraiment comme les base de donnée apparemment.
  7. Debian est aussi très bien. L'avantage de gentil est d'être compilé sur la machine lors de l'installation. Et c'est aussi très minimaliste ! Après je pense que Debian et gentoo doivent se valoir ?
  8. Bon après quelques jours de galère j'ai réussi à installer une gentoo et la compiler dans une machine virtuelle ! La doc est plutôt bien faite et voici son lien : https://wiki.gentoo.org/wiki/Handbook:Main_Page Mon plus gros problème a été d'installer internet correctement ! Et pour ça la super documentation de Gentoo possède une petite boulette : pour installer internet il faut : ifconfig -a récupérer le nom de l'interface Ethernet par exemple chez moi c'est eno167777 ln -s /etc/init.d/net.lo /etc/init.d/net.eno167777 rc-update add net.eno167777 default reboot
  9. Reivax

    VMWare : un pc virtuel

    Oui la version 12 est considéré comme produit gratuit :)
  10. Reivax

    VMWare : un pc virtuel

    Super le tuto ! Par contre tu dit que c'est payant mais non c'est gratuit pour un usage non commercial. (Je ne sais pas si c'est récent ou pas, je n'y connais pas grand chose mais j'ai trouvé que c'était bien pratique pour tester un os linux Gentoo :) )
  11. Reivax

    VMWare : un pc virtuel

    VMWare est un logiciel permettant de créer un ordinateur dans votre ordinateur ! C'est à dire que vous pouvez installer un autre système d'exploitation autre que votre windows par exemple. Ce qui vous permettrait par exemple d'installer un linux, un windows 3.1, un windows 95 etc ! Son utilisation peut être assez compliqué car vous allez vous retrouver avec une machine entièrement vide ! Il faudra donc booter un système d'exploitation et l'installer (dans le cas d'une Gentoo comptez plusieurs heures !). Mais ceci pourrais vous permettre de jouer à de vieux jeu, sans même émuler un os. Par contre la vm (virtual machine) tourne en même temps que votre os principal, donc c'est assez gourmand en ressource ! Ce logiciel est gratuit pour une utilisation non commerciale. Le lien pour le télécharger : https://my.vmware.com/fr/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/12_0 il faut installer le worstation player.
  12. Reivax

    Dead by Daylight

    ça me fait beaucoup penser à Damned ! Je pense que je le prendrai :)
  13. Aujourd'hui nous allons apprendre à utiliser des requêtes dites LMD (langage de manipulation de donnée). Dans un premier temps nous allons ajotuer des lignes dans nos tables pour travailler dessus plus tard. Pour cela nous utiliserons des INSERT. Ensuite nous allons récupérer ces informations avec des requêtes de sélection (SELECT). 1/ INSERT basique Dans cette partie nous allons faire des insertions de ligne dans nos deux tables clients et factures. Ces INSERT seront basiques, je vous montrerai dans un autre tutoriel d'autres façon d'écrire un insert. Pour rappel voici le schéma de la base de donnée que nous avons créer dans le Tuto 2 jusqu'à maintenant : Maintenant nous allons jouer les requêtes suivantes : INSERT INTO `client`(`IdClient`, `Name`) VALUES (1,'SARAH CROCHE'); INSERT INTO `client`(`IdClient`, `Name`) VALUES (2,'SAM VIMAIRE'); INSERT INTO `client`(`IdClient`, `Name`) VALUES (3,'PRINCESSE MONONOKE'); INSERT INTO `client`(`IdClient`, `Name`) VALUES (4,'CAROTTE FONDEURENFERSSON'); Ces 4 lignes nous permettent d'insérer 4 nouveaux clients. Nous insérons (INSERT) dans (INTO) la table client, et dans chaque champ IdClient et Name les valeurs (VALUE) 1 et Sarah Croche etc. Vous remarquerez que cette fois ci j'ai protéger le nom des tables et objets avec un ` (alt + 7). Cette protection n'est pas obligatoire et je la met assez rarement, mais il peut arriver qu'elle soit obligatoire. En effet si j'avais créer une table client-2, la protection aurait été obligatoire à cause du tiret dans le nom de la table. Nous allons maintenant rajouter un autre client : INSERT INTO `client`(`Name`) VALUES ('ESME CIREDUTEMPS'); Quelle est la différence avec mes autres INSERT ?.Je n'ai pas renseigné le champ IdClient, pourtant si nous vérifions, une ligne dans la table client a été créé ! En effet rappelez vous notre requête de création de la table client, nous avions mis pour le champ IdClient comme quoi il devait être en AUTO_INCREMENT. Donc nous n'avons pas besoin de renseigner le numéro de IdClient, MySQL sait automatiquement le remplir ! Nous allons maintenant compléter la table facture avec d'autres insert : INSERT INTO `facture`( `IdClient`, `Descr`) VALUES (5,'Facture de bottine'); INSERT INTO `facture`( `IdClient`, `Descr`) VALUES (1,'Téléphone'); INSERT INTO `facture`( `IdClient`, `Descr`) VALUES (4,'Plastron'); INSERT INTO `facture`( `IdClient`, `Descr`) VALUES (4,'Croquettes pour loup'); INSERT INTO `facture`( `IdClient`, `Descr`) VALUES (2,'Bottes usées'); Vous remarquerez que je n'ai pas renseigné ni l'idfacture (car il est en auto_increment) ni la descr2. En effet la descr2 peut être null et donc il est autorisé de ne rien mettre dans cette colonne. 2/Requête de sélection Dans cette partie nous allons apprendre à sélectionner et retrouver les informations que nous avons insérer précédemment. Cette partie risque d'être assez longue et nous irons d'un cas simple à des cas de plus en plus compliqués. A/Sélection de toutes les lignes d'une table La requête SELECT la plus simple possible est celle ci : SELECT * FROM `client` Cette requête permet de sélectionner (SELECT) toutes les colonnes (*) qui proviennent (FROM) de la table client. Nous avons donc obtenu un tableau avec l'idclient et le Name de toutes les lignes de la table client : Imaginons maintenant que je n'ai besoin que de la colonne Name, je peux dire dans ma requête que je ne veux que la colonne Name. SELECT `Name` FROM `client` Nous avons remplacer l'étoile par le nom du champ. Le résultat est donc le même mais sans la colonne IdClient. Il est possible d'ajouter plusieurs nom de colonne en les séparant par des virgules. Nous aurons l'occasion de voir d'autres cas plus tard. B/Les conditions Jusqu'ici nous avons sélectionner toutes les lignes de la table. Or la plupart des temps nous n'aurons pas besoin de toutes les lignes mais juste de quelques unes ! Pour cela nous allons utiliser les clauses WHERE à la fin de la requête pour diminuer le nombre de ligne que nous récupérons. SELECT * FROM `client` WHERE name = 'SAM VIMAIRE' Nous avons donc rajouté une clause WHERE à la fin de notre requête, et nous n'avons ramené qu'une seule ligne, celle où (WHERE) le nom (name) est égal à (=) SAM VIMAIRE. Nous avons donc ramené toutes les lignes correspondant à ce cas, ici nous n'avons qu'un seul Sam Vimaire. Il existe d'autres comparateur que le égal. Par exemple nous pouvons récupérer tous les numéro de client supérieur ou égal à 3 : SELECT * FROM `client` WHERE idclient >= 3 Les autres comparateurs peuvent aussi être utilisés. Il existe d'autres opérations comme le LIKE. Le LIKE permet de retrouver des lignes à partir d'un morceau du champ. Dans l'exemple suivant nous allons chercher tous les clients commençant par S : SELECT * FROM `client` WHERE name like 'S%' Nous avons bien récupéré les deux noms commençant par un S. Le % sert de joker dans la chaîne de caractère ! Il est donc aussi possible de retrouver les noms contenant un S puis plus loin un M par exemple. Ainsi nous pourrions écrire '%S%M%'. Essayez pour voir ce que cela donne ! Et surtout essayer de faire d'autre cas et voir les résultats. Il est aussi possible de faire une liste de valeur avec le mot clé IN. Par exemple dans l'exemple suivant nous allons chercher PRINCESSE MONONOKE et ESME CIREDUTEMPS dans la liste de nom. SELECT * FROM `client` WHERE name IN ('ESME CIREDUTEMPS','PRINCESSE MONONOKE') Le mot clé NOT va nous permettre d'inverser les sélections. Ainsi un NOT LIKE fera l'inverse d'un LIKE. Un NOT IN fera que vous allez exclure les valeurs que vous avez mentionné dans la liste. Voici quelques exemple par rapport à ce que nous avons fait précèdemment : SELECT * FROM `client` WHERE name NOT IN ('ESME CIREDUTEMPS','PRINCESSE MONONOKE') SELECT * FROM `client` WHERE name NOT LIKE 'S%' Ce tuto est fini :). Vous avez désormais les bases pour écrire des SELECT ! Mais attention il nous reste encore à voir pas mal de choses sur les SELECT. Notamment les sous requêtes et les EXISTS (Qui sont liés au sous requête). Mais comme c'est un peu plus compliqué je pense qu'il est préférable de faire une autre partie ! De plus nous allons devoir voir aussi les jointures; c'est à dire comment relier deux tables entre elles !
  14. Reivax

    Influent

    J'ai la version russe et elle est pas mal. ça permet de confirmer un peu la lecture de l'alphabet et sa prononciation. Maintenant je peux lire les russes sur CSGO et les panneaux dans les jeux tel que DayZ :D. Sinon oui je crois que c'est pas top pour les version japonaise, chinois etc. En gros tous ce qui se fait avec des symboles autres qu'un alphabet assez classique (le russe reste très proche de l'alphabet latin, mais il faut quand même se renseigner avant pour pouvoir le lire car influent ne le permet pas ! Il n'y a aucun équivalent russe / alphabet latin dans mes souvenirs !
  15. Reivax

    SQL(2) : LDD et Wamp

    Petit tuto fini :). Ce n'est qu'une petite base pour le moment :). Je pense continuer sur les SELECT :).
  16. Reivax

    Influent

    Disons que ça permet d'entendre aussi le vocabulaire. Après ça ne remplace pas les cours mais ça change un peu :)
  17. Reivax

    Influent

    Influent est un petit jeu que je qualifierai d'éducatif ! Ce jeu vous permettra d'apprendre du vocabulaire dans une langue de manière ludique ! Le nombre de langue disponible est tout simplement énorme et s'enrichit tous les jours. Par exemple vous pourrez avoir le japonais, le russe ou encore plein d'autre langue. Ah et y'a un petit avion qui permet de tirer sur les objets inscrit en dessous !! Sinon c'est un peu comme un point en click, il existe différents modes de jeu. Ainsi dans un mode de jeu, vous allez devoir le plus rapidement trouver les objets indiqués dans la langue que vous essayez d'apprendre. Pour l'avoir, je le trouve pas mal mais ça ne vous permettra pas d'apprendre réellement une langue. Par contre ceci vous permettra d'enrichir votre vocabulaire !
  18. Voici la deuxième partie du tutoriel sur le SQL. Dans cette partie nous allons installer Wamp pour tester et pratiquer un peu de MySQL et ensuite je vous montrerai quelques requêtes qui nous permettrons de créer des tables ! J'irai parfois assez rapidement sur la création de table car il est généralement possible de générer très facilement sans SQL les tables et autres objets. 1) Installation de WampServer. WampServer est un ensemble de logiciel qui contient entre autre un serveur Apache, PhpMyadmin et une base de donnée MySQL. L'installation de celui ci nous permettra de tester nos requêtes et de créer nos différentes tables grâce à phpmyadmin. Il existe d'autre requêteur bien plus pratique que phpmyadmin mais celui ci est l'un des plus utilisés pour le net. (Sinon vous avez par exemple Toad, mais celui ci est payant pour les bases Oracles (gratuit pour Mysql normalement mais je n'aime pas trop !)). Pour télécharger Wampserver, rien de plus simple : allez sur l'adresse suivante : http://www.wampserver.com/ Il faut installer la version correspondant à votre windows. Pour ceux qui n'ont pas windows il existe d'autre installation comme Xamp, Mamp etc. Je ne vous les détaillerai pas car je ne les connais pas du tout ! La suite du tuto sera valide pour n'importe quel système d'exploitation. En effet le SQL n'est pas dépendant de votre OS. Une fois Wampserver installé, il faudra le lancer et aller dans phpmyadmin comme indiqué dans la capture d'écran suivante : Lorsque vous aurez cliquer sur phpmyadmin, votre navigateur préféré s'ouvrira (Pas IE s'il vous plaît !) avec l'interface de phpmyadmin. Vous avez alors accès à un ensemble de base de donné MySQL. 2)Création de la DataBase Dans phpmyadmin, vous pouvez créer une nouvelle Database en cliquant sur SQL et en entrant la requête suivante : CREATE DATABASE FACTURATION; Nous avons donc lancé une opération de création (CREATE) d'une base de donnée (DATABASE) et nous avons nommé notre nouvelle database facturation. Si nous voulions supprimer cette base il faudrait rentrer : DROP DATABASE FACTURATION; Cependant il est fort probable que la dernière requête ne passe pas pour des raisons de droit. De toute manière nous ne voulons pas détruire la base. La différence entre cette requête et la précédente est que nous ne faisons pas une création mais une suppression (DROP). 3)Création de la table facture. Pour créer une table nous allons faire de nouveau un CREATE mais d'une TABLE. Il faudra que nous définissions la clé primaire, le format des champs, leurs noms et si la valeur NULL est possible. CREATE TABLE Client ( IdClient INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, Name VARCHAR(50) NOT NULL ); La table que nous créons contient donc deux champs. Le champ IdClient est un nombre entier (INTEGER), qui s'autoincrémente (AUTO_INCREMENT), qui n'accepte pas la valeur NULL (NOT NULL) et est clé primaire (PRIMARY_KEY). Le seconde champ est le champ Name, qui est une chaîne de caractères (VARCHAR) de 50 caractères et qui n'accepte pas la valeur NULL (NOT NULL). Si vous deviez ajouter d'autres champs il suffirait d'ajouter d'autre champ avec leurs caractéristiques, les champs étant séparés par des virgules. Les principaux formats de champ possibles sont les suivants : INTEGER : nombre entier VARCHAR : chaîne de caractère, il prend entre parenthèse le nombre de caractère maximum. DATE : une date. DECIMAL : un nombre décimal avec entre parenthèse le nombre de chiffre total puis le nombre de chiffre après la virgule. Pour avoir une liste plus complète, vous pouvez aller consulter la documentation suivante : http://dev.mysql.com/doc/refman/5.6/en/data-types.html. Pour supprimer la table nous pourrions utiliser la commande suivante : DROP TABLE Client; 4) Création d'un index Avant de créer un index, nous allons créer une table sans index avec le code suivant : CREATE TABLE Facture ( IdFacture Integer NOT NULL, IdClient Integer NOT NULL, Descr Varchar(254) NOT NULL ); Comme avant nous allons créer un index mais cette fois ci avec une deuxième requête CREATE mais cette fois ci d'un objet INDEX. Nous allons créer un index sur IdClient pour faire une recherche plus efficace sur ce champ. CREATE INDEX Idx_A_facture ON facture (IdClient); Nous avons donc créer (CREATE) un index (INDEX) nommé Idx_A_facture sur la table facture et la colonne IdClient. Nous aurions pu ajouter d'autre colonne à l'index en ajoutant d'autre colonne après IdClient séparé par des virgules. 5/Modification d'une table Il est aussi possible de modifier une table. Dans l'exemple précèdent nous avons créer une table Facture mais sans clé primaire. Nous allons remédier à ce problème et ajouter un index primaire sur la table. Les index primaire dans MySQL ne sont modifiable que par la commande ALTER. ALTER TABLE Facture MODIFY IdFacture Integer auto_increment Not null primary key; Cette requête nous permet de modifier (ALTER) la table (TABLE) facture et de modifier (MODIFY) le champ IdFacture en un entier (Integer), qui s'auto incrémente (AUTO_INCREMENT), n'est jamais null (not null) et est une clé primaire. Il est aussi possible de renommer la table : ALTER TABLE Facture RENAME Facture2; de supprimer une colonne : ALTER TABLE Facture DROP Descr; Ou encore d'ajouter une colonne : ALTER TABLE Facture ADD Descr2 VARCHAR(254); Si vous voulez modifier un INDEX il suffit de faire les même requête que pour les tables mais en remplaçant TABLE par INDEX :). Voici ce qui termine ce petit tutoriel sur les LDD (Langage de définition de donnée). Je n'ai pas présenté toutes les requêtes possibles mais vous avez les principales. Je ferai peut être un autre tuto sur ces requêtes mais plus tard quand nous aurons appris les requêtes de LMD (langage de manipulation de donnée) Select, Insert et Update ! Et peut être après l'utilisation des hints qui vous permettrons d'optimiser vos requêtes. En résumé nous avons appris les requêtes CREATE, DROP et ALTER. Vous êtes donc capable désormais de créer des tables, database, index ainsi que de les supprimer ou encore de les modifier !
  19. Reivax

    Paper Please

    Connaissez vous Paper Please ? Ce petit jeu pixellisé est un petit chef d'oeuvre d'originalité ! Vous êtes un douanier dans un pays communiste fictif dans une ambiance guerre froide. Comment en tant que petit douanier allez vous gérer les entrées et les différentes restrictions de pire en pire du régime communiste ? Allez vous laisser passer ce bonhomme avec un faux passeport fait maison ou le repousser ? Allez vous aider les résistants ou provoquer leurs arrestations ? Allez vous mettre le poster de sport ou mettre le cadre du partie ? Qu'allez vous faire pour sauver votre famille de cette dictature ? Les fins sont nombreuses, toutes vos actions auront des répercussions très importante ! Allez vous finir au Goulag ou vous échapper ? Provoquer la fin du régime ou en faire partie ? Il y a tellement de fin différentes ! Tellement de manières de mal finir ! Les graphismes payent pas de mine mais on se prend rapidement au jeu :). Apparemment il est aussi disponible sur smartphone !
  20. Reivax

    rocket league

    J'adore ce jeu, c'est assez drôle mais tout de même assez technique ! Le panier est assez marrant aussi ! Le mieux serait de le faire en vrai, ça a l'air très marrant, la preuve =>
  21. Crash Bash tu peux y jouer en multi sur Romstation ;).
  22. Reivax

    Damned

    Tu as trop peur ? :)
  23. Reivax

    Site RomStation

    Ah super logiciel ! Surtout quand quelqu'un est premium et peux lancer une partie multijoueur. J'ai joué à MicroMachine sur Snes en multijoueur grâce à ce logiciel et c'est top ! (Et très marrant !). Pareil pour jouer au jeu CrashBandicoot avec plein d'épreuve différente (je ne me souviens plus du nom )
  24. Connaissez vous DIA ? Non pas le supermarché mais le logiciel DIA ? Ce petit outil permet de créer des schéma UML ou des Schémas de base de donnée ou encore plein d'autres type de schéma ! Il peut même générer vos classe java avec un plugins (je l'ai utilisé une fois mais je ne sais plus comment faire !). Il paye pas de mine mais il est très pratique et surtout gratuit ! Je vous laisse le découvrir mais je l'ai utilisé pour faire mes schémas sommaire de base de donnée ! Vous pouvez le télécharger ici : http://dia-installer.de/
  25. Bonjour ! Ce petit tutoriel a pour but de vous expliquer le fonctionnement d'une base de donnée et plus particulièrement MySQL. Cependant le but est aussi de vous d'appliquer ces explications à d'autres types de bases de données comme postGreSQL, Access ou encore Oracle. Ces différentes bases de données (ou SGBD) sont plus ou moins accessible au grand public, par exemple Oracle est une base de donnée extrêmement coûteuse en terme de licence et ne se rencontre donc que dans le milieu professionnel alors que MySQL est gratuit et sert énormément dans tous ce qui touche au net. Il est fort probable que le forum jeu.video soit sous MySQL (mais je peux me tromper !) :). Qu'est ce qu'une base de donnée ? Une base de donnée est un rassemblement d'informations qui sont ordonnées sous forme de différents "tableaux" appelé tables. Ces tableaux contiennent des colonnes appelées "Champ" et les lignes de ces tableaux sont appelées "Tuple". Dans la base de donnée les tables sont reliées entre elle par des relations. Ainsi si vous avez deux tables, une table facture et une table client. La table client contient les informations sur votre client avec un numéro d'identifiant du client et la table facture contient les informations sur les factures dont le client facturé et donc le numéro client. La liaison entre les deux tables se fera grâce à l'identifiant client. Le schéma suivant montre notre base de donnée sommaire : Cette base de donnée nous permet donc de retrouver les factures et leur clients associés. Les types de champs et la valeur null Le type d'un champ est son format. Dans l'exemple précédent j'ai mis que le Id_Client était un Integer, ceci signifie que IdClient est un entier naturel. Name est quand à lui un VarChar, c'est à dire une chaîne de caractère. Il existe de nombreux types différents pour les champs, ceux ci définissent le format de votre champ et sont très important car ils indiquent à la base de donnée comment stocker les informations. Vous ne pourrez donc mettre dans un champ Integer que des entiers et dans un champ decimal que des nombres décimaux. etc ! Il existe une valeur particulière dans une base de donnée qui est la valeur "inconnu" c'est à dire null. Cette valeur permet de remplir grosso modo un champ à vide. Dans notre base de donnée d'exemple précédente nous n'avons pas de valeur null possible. Effectivement il est possible d'interdire la valeur null dans un champ d'une table. Par exemple une facture sans client étant totalement illogique, nous pouvons obliger ce champ à être renseigné. Les clés primaires et secondaires : Les clés primaires d'une table sont généralement le moyen d'obtenir de manière unique une information. Dans notre exemple précédent les champ qui sont soulignés sont des clés primaires. Ainsi si vous utilisez un idFacture, par exemple le "1", alors vous aurez accès qu'à une seule facture. De même pour l'idClient, si vous cherchez le "2", vous n'aurez alors accès qu'à une seule ligne de la table Client. Les clés secondaires sont des clés primaires d'une table mais présente dans une autre table. Prenons notre champ IdClient, celui ci est clé primaire dans la table Client mais il est aussi présent en tant que champ normal dans la table Facture. La liaison entre les deux tables étant donnée par ce champ IdClient alors le champ IdClient est une clé secondaire dans la table Facture. Attention il arrive que l'on ne déclaré pas la clé secondaire dans la base de donnée malgré le fait qu'elle soit dans le modèle, et ceci pour simplifier et éviter quelques problèmes dans l'utilisation de la base de donnée. En effet, si vous aviez créer une facture sur le client 1, vous ne pourrez pas supprimer le client 1 sans supprimer cette facture ! (L'exemple n'est pas très bon car dans ce cas là nous perdrions toutes cohérence pour la facture mais il existe des cas où ce genre de chose peut exister et est nécessaire). Les clés composées Une clé de table n'est pas forcément composée que d'un seul champ. Elle peut être composé de plusieurs champs. Rajoutons des lignes à notre factures ! La table Ligne Facture contient deux clés primaires ! Dont une est même clé secondaire ! Ainsi à partir d'une facture vous pouvez retrouver toutes les lignes associés à celle ci grâce au champ IdFacture. Quel est l'intérêt d'avoir une clé composé ? Car nous aurions pu créer une clé primaire simple IdLigneFact et mettre en clé secondaire la facture ? Déjà si vous allez consulter la table LigneFact ce sera plus clair d'avoir deux clés primaires, la vision de la facture associée est directe. Ensuite si vous aviez utilisé qu'une seule clé primaire, vous auriez alors un numéro incrémental commun à toutes les factures. Dans notre cas ici la facture 1 aura un idligne 1 et 2 et la facture 2 un idligne 1 et 2 aussi alors que sinon vous auriez eu les numéro allant de 1 à 4. Pour retrouver les numéros de lignes vous auriez du ajouter un autre champ numeroLigne. Or dans ce cas là vous perdez l'unicité entre le numéro de facture et le numéro de ligne. En effet la facture 1 aurais pu avoir deux lignes 1 ! Avec la clé primaire unique composé c'est impossible car l'ensemble facture 1 ligne 1 existe déjà ! La dernière raison est une raison de performance. Lorsque vous allez faire la jointure entre la table Facture et LigneFact ce sera plus rapide avec la clé composé. Je vous expliquerai pourquoi avec les index tout de suite ! Les index : Les index sont des objets SQL ressemblant aux tables mais n'ont d'existence qu'associé à une table. Nous avons déjà vu quelques index depuis le début de ce tutoriel. En effet les clé primaire sont des index ! Qu'est ce qu'un index ? C'est en fait une table trié dans un ordre précis. Ainsi dans notre exemple la table facture possède un index dit primaire qui stocke et trie tous les IdFacture dans l'ordre. Il est aussi possible d'avoir des index sur d'autre champ que les clé primaires, ce sont alors des index secondaires. Nous pourrions ainsi créer un index sur l'idClient de la table Facture. Un index n'a pas non plus forcément qu'une seule colonne, il peut en avoir deux comme dans le cas de la table LigneFacture. Dans ce cas l'index contient les deux colonne IdFacture et IdLigne. L'index est d'abord trié dans l'ordre croissant sur le numéro de facture et ensuite dans l'ordre croissant du numéro de client. Mais à quoi ça sert ? Imaginez l'annuaire téléphonique, vous l'avez entre les mains et vous êtes en train de chercher le numéro de Toto. Manque de bol, l'annuaire a été fait au fur et à mesure et donc les numéros des gens apparaît dans l'ordre dans lequel ils se sont abonnés aux téléphone. En gros pour aller chercher Toto il va vous falloir parcourir tous l'annuaire ! Bon courage ! Surtout si Toto a plusieurs numéros et qu'il vous les faut tous, vous allez devoir vraiment tous parcourir ! En gros ça va être long ! En fait l'index va vous aider à parcourir votre annuaire, il l'a trié par ordre alphabétique ! Au lieu de faire page par page il va ouvrir l'annuaire trié au milieu voir si Toto est après ou avant cette page, puis de nouveau il va ouvrir une page au milieu de ce qui reste et ainsi de suite. Il va donc opérer par dichotomie (j'en ai perdu quelques uns là ?) et ne fera qu'un nombre très limité d'opération pour trouver tous les numéros de Toto ! L'index est donc un outil de performance incroyable ! Mais attention ! Cet index est aussi un gros gourmand ! Parfois un index ou trop d'index tue l'index ! Comme je vous l'ai expliqué l'index est une table trié ! Quand vous allez ajouter un tuple dans votre table facture, il va aussi devoir le faire dans l'index. Vous dédoublez donc l'information sur IdFacture mais aussi le temps d'insertion d'une ligne ! Alors si vous n'avez qu'un index dans une petite table ça va ! Mais imaginez si vous avez des centaines de millions de lignes ? Et 40 Index ? Votre recherche sera rapide mais l'insertion sera devenu super lente ! Les index sont donc à utiliser, il faut les utiliser mais il faut bien choisir les champs à indexer. Dans notre exemple précédent il est par exemple totalement inutile d'indexer les champs Descr. Personne ne fera de recherche sur la description d'une ligne de facture ! Par contre, nous pourrions faire un index sur le champ name de la table client, il est possible que dans notre logiciel qui utilisera cette base de donnée veuille retrouver les clients par nom d'utilisateur et non par idClient. C'est fini ! Voilà je vous ai expliqué ce qu'est une base de donnée SQL dans les grandes lignes. Il existe plein d'autres choses à connaître tel que les tablespaces (lieu où sont stockés les tables). Mais ceci n'est pas très utile à ce niveau. Si vous voyez une boulette n'hésitez pas à me le dire que je corrige. Je n'ai rien expliqué sur le SQL car avant d'expliquer le SQL ben il faut savoir ce qu'est une base de donnée !
×
×
  • Créer...

Information importante

En navigant ce site, vous acceptez nos Politique de confidentialité.