Base de données exemple

  

Cet exemple illustre l'utilisation de base du module DBI de Perl. La base de données contient des enregistrements de personnes qui souhaitent participer à un courrier électronique à base de "service pen-pal '. Abonnés fournir leur adresse e-mail, quelques informations personnelles et d'un ensemble d'intérêts choisis parmi un ensemble prédéfini d'environ 100 sujets possibles. Les recherches peuvent être faites pour les autres abonnés qui partagent des intérêts communs, et de satisfaire d'autres contraintes. La base de données vient d'une table, les lignes de caractériser les abonnés à ce «Service e-Pal. Chaque abonné dispose d'une adresse e-mail (supposée de simplicité pour s'adapter dans un champ de 32 caractères), ce qui doit être unique, et sert de clé primaire. Normalement identifier les abonnés eux-mêmes comme masculins ou féminins, mais ne peut choisir de spécifier leur sexe (dans ce cas ils sont classés comme «e-personnes»). Les abonnés peuvent définir des restrictions sur le type de personne avec qui ils souhaitent pour correspondre (en précisant homme, femme, e-personne ou de tout). Par souci de simplicité, les intérêts de l'abonné sont représentés en utilisant cinq champs entiers distincts. Le tableau a la définition suivante:

CREATE TABLE EPAL (email varchar (32) NOT NULL, type varchar (8) NOT NULL, veulent varchar (8) NOT NULL, interest1 nombre (4), intérêts2 nombre (4), interest3 nombre (4), interest4 nombre (4 ), interest5 nombre (4), CONSTRAINT id_pkey PRIMARY KEY (courriel), CONSTRAINT type_check CHECK (type in ( 'MALE', 'female', 'EPERSON')), CHECK CONSTRAINT want_check (Want in ( 'MALE', 'female ',' EPERSON ',' TOUT ')));

Les contraintes de «contrôle» ne sont pas particulièrement importante et peut être omis si la base de données que vous utilisez ne prend pas de telles contraintes, le code de programme pour l'essentiel des doublons de ces contrôles. Le programme exemple est un programme autonome la lecture de données Perl à partir du clavier et de travailler directement avec la base de données. Les commandes peuvent être fournis au programme pour ajouter des enregistrements à la base de données ou d'effectuer des recherches. Le code peut être adapté pour former un script CGI qui a accepté les données entrées dans les formulaires HTML, ce qui aboutirait à une web-E basée sur le service Paypal - quelque chose de plus utile que cette version standalone. Saisie de données très similaires sont nécessaires pour l'ajout de disques et recherches. Les utilisateurs doivent entrer leur propre «type», «type» de la personne avec qui ils souhaitent établir une correspondance, et doit en choisir cinq intérêts de la liste des intérêts prédéfinis; si un document doit être ajouté, les données d'entrée doit aussi inclure un e-mail adresse. Les critères pour un match de succès dans la recherche sont les suivants:

La valeur de «type» dans le dossier respecte la «veulent une« exigence d'une demande - avec la configuration que la requête 'want = tout' correspond à toute valeur dans le champ Type. Le "type" spécifiés dans la demande de recherche respecte la «veulent une« exigence donnée dans l'enregistrement - là encore avec «tout» étant compensée par tous les types de requêtes possibles. Les deux ensembles d'intérêts ont une valeur non nulle intersection (les intérêts sont représentés par des nombres de la plage 1-100, elles ne sont pas nécessairement classés). Ces critères d'appariement sont difficiles à exprimer en tant que condition de sélection SQL, il est plus facile pour le programme pour récupérer tous les documents et appliquer les critères de programmation. Le programme utilise un certain nombre de variables globales, et chaque sous-programme a des variables locales. La taille un peu plus importante du programme augmente le risque d'utilisation d'erreurs résultant de la déclaration implicite de variables, ou l'utilisation de variables non initialisées. Il est utile de changer le mode de l'interpréteur Perl, afin que toutes les variables doivent être déclarées. Qui définit l'utilisation stricte de la directive ' "au début de l'émission fait de ce changement.

La ligne principale appelle la routine d'initialisation qui crée une connexion à la base et met en place de table. La fonction principale dispose alors d'un «menu de traitement en boucle, sélectionnez 'les commandes entrées par l'utilisateur. Les commandes sont traitées sur 'Ajouter', 'search', 'liste' (contenu des listes de liste d'intérêt) et 'quit'. Le code est:

initialize; while (1) (my print $ cmd; «Entrée de commande (ajout, recherche, liste (intérêts), quitter):"; $ cmd =  If ($ cmd = ~ / quit / i) (last;) elsif ($ cmd = ~ / search / i) (doSearch;) elsif ($ cmd = ~ / add / i) (doAdd;) elsif ($ cmd = ~ / list / i) (print "liste d'intérêt @ interestlist \ n";) else (print "Commande non reconnue \ n";))

La routine d'initialisation crée une table de hachage qui mappe sujet d'intérêt le numéro identifiant. Les utilisateurs doivent entrer leurs intérêts et de les faire vérifier, ici, le hachage sert de rechercher un système plus rapide que la liste initiale. Les autres tâches pour la routine d'initialisation sont l'ouverture d'une connexion à la base et la préparation à la fois une requête SQL de sélection simple et une instruction SQL paramétrée plus élaboré qui sera utilisé pour entrer des données. L'instruction INSERT requiert huit valeurs à être lié - adresse email, 'type', 'Wanna' de cinq et de l'intérêt.

Sub Initialize (my ($ id, $ d'intérêt); $ id = 0; foreach $ d'intérêt (@ interestlist) ($ interesttable intérêt) ($ dbh = $ id; $ id + +;) $ = DBI-> connect ($ source_donnees, "HSimpson", "Doh", (AUTOCOMMIT => 1)) | | die "Impossible de se connecter à la DB \ n"; searchHandle $ = $ dbh-> prepare ( "SELECT * FROM EPAL"); insertHandle $ = $ dbh-> prepare ( "INSERT INTO EPAL (?,?,?,?,?,?,?,?)");)

La fonction doAdd utilise trois fonctions d'aide simples (owntype, wanttype, getInterests) pour obtenir une entrée utilisateur. Le getInterests fonction demande à l'utilisateur de façon répétée jusqu'à ce que des données définissant cinq intérêts ont été correctement utilisées, il retourne une liste avec les numéros d'identification correspondantes. Note l'appel à la fonction Exécuter, ce qui spécifie trois arguments explicites et les cinq-array intérêt élément. Cela ne correspond aux exigences de huit arguments - après tout, Perl combine tous les arguments dans une liste unique de toute façon, et puis se divise les arguments à l'intérieur de la fonction.

sous doAdd (my ($, vous, le désir $, $ email, @ intérêts); $ you = owntype; $ désir = wanttype; @ intérêts getInterests =; print "Votre adresse e-mail:"; $ email =  ; Chomp ($ email); $ insertHandle-> execute ($ email, $ désir de vous, $, @ intérêts) | | die "Impossible d'insérer le disque parce $ DBI:: errstr";)

La fonction de recherche utilise la même manière les fonctions d'assistance (owntype, wanttype et getintersts) pour obtenir des données caractérisant le chercheur. Puis il exécute la requête SQL: "Tout sélectionner dans le tableau EPAL. Chaque enregistrement est lu dans une liste ($ searchHandle-> fetchrow_array). Les données récupérées sont ensuite vérifié à la demande de données (certains de dos inhabituel »de Perl-à-face des tests conditionnels» sont illustrées dans ce code).

un article présenté par Michael Barrbay


Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite.
Important: Cet article «exemple base de données" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.


Online: 319 users browsing the articles directory