Professional Documents
Culture Documents
Résumé
Ce chapitre est consacré à quelques rappels sur les bases de données (en particulier les bases de données
relationnelles). Par la suite, nous verrons comment développer une application bases de données sous
l’environnement Delphi.
Ce support de cours ne se veut nullement exhaustif. Ce n’est qu’une référence de base.
I. DEFINITIONS ELEMENTAIRES
Bases de données : une base de données est un ensemble d’informations structurées mémorisées sur un
support permanent.
SGBD (Système de Gestion de Bases de Données): un SGBD (en anglais DBMS, Data Base
Management System) est un programme (logiciel) informatique de haut niveau qui permet de créer et
de maintenir une base de données. C’est à dire :
- décrire les données qui seront stockées,
- manipuler ces données (ajouter, modifier, supprimer des informations),
- Consulter les données (sélectionner, trier, calculer, agréger, etc)
- Définir des contraintes d'intégrités sur les données (contraintes de domaines, d'existence,etc)
- Définir des protections d'accès (mots de passe, autorisations, etc.),
- Résoudre les problèmes d'accès multiples aux données (interblocages),
- Prévoir des procédures de reprise en cas d'incident (sauvegardes, journaux, etc).
On distingue trois types de SGBDs : SGBD hiérarchique, SGBD réseau, et SGBD relationnel. Dans ce
qui suit dans ce fascicule, nous nous intéresserons à ce dernier type de SGBD pour plusieurs
raisons parmi lesquelles notamment le fait qu’ils soient les plus utilisées actuellement. Parmi les SGBD
relationnels existants sur le marché, on peut citer par exemple : Oracle, Paradox, Access, DB2,
Gemstone, Sybase, Informix, DBase, Ingres, etc.
Alias : Il est possible de définir un alias au répertoire de travail. Cet alias sera utilisé ultérieurement
dans le développement de l'application et permettra d'éviter d'avoir à fournir le chemin absolu du
répertoire de travail. Par exemple : alias c:\delphi\bdd\
Bases de données relationnelles : Les bases de données relationnelles gèrent les données selon le
mode, mis au point par E.F. Codd, basé sur l'utilisation du langage SQL (Structured Query Language).
Ce mode sépare l'aspect physique des données (stockage sur disque) de leur représentation logique
(présentation à l'utilisateur). Les données apparaissent alors sous forme de tables qui masquent la
complexité des mécanismes d'accès en mémoire. Ce modèle libère l'utilisateur de tous les détails de
stockage et permet un accès purement logique aux données.
Chaque table permet de stocker un type particulier de données. Une donnée stockée constitue un
enregistrement dans la table (= une ligne). Elle peut être constituée d'un nombre variable d'informations
élémentaires. Chaque information élémentaire constitue un champ de l'enregistrement (= une colonne).
Les besoins actuels nécessitent l'utilisation fréquente de dizaines de tables, chacune permettant le
stockage d'une donnée structurée particulière. Il y a lieu d'éviter la redondance des données élémentaires
stockées. L'ensemble de tables ainsi constitué s'appelle une base de données.
Clé (key) :
On appelle clé un identifiant permettant de déterminer d'une façon unique un enregistrement dans une
table. Une clé peut être :
• Un des champs de la table si les valeurs qu'il peut prendre sont toutes différentes ;
• Un ensemble de champs permettant de définir un identifiant unique ;
• Un champ spécial qui n'est pas une donnée proprement dite mais dont on peut être
certain de l'unicité (identifiant numérique en général).
Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi
Index : un index est une information sur l'ordonnancement des différents enregistrements dans une
table (il peut ne pas correspondre à l'ordonnancement physique des enregistrements). Il sert à réaliser
des tris. On peut définir plusieurs indexes pour une même table.
Lorsqu’un index correspond à une clé, on parle d’un index primaire. Autrement, on parle d’index
secondaire.
Requête :
Pour accéder aux différentes informations l'utilisateur doit exécuter différentes requêtes qui seront
ensuite interprétées par le gestionnaire de base de données. Dans le cas d'une base utilisée dans le
contexte client / serveur, seule la requête est transmise au serveur. Celui-ci la traite puis renvoie les
résultats au client.
Une requête est formulée selon un langage particulier, qui est d'ailleurs un des fondements des bases de
données relationnelles : le langage SQL.
Vue (view):
Une vue peut être affichée sous forme de tableau (chaque ligne correspond à un enregistrement et les
colonnes correspondent aux champs sélectionnés) ou sous forme de fiche : un seul enregistrement est à
l'écran en même temps. Lorsqu'une table est triée selon un index secondaire, elle présente à l'utilisateur
une "vue" qui diffère de son implémentation physique.
Delphi dispose de nombreux composants permettant d’accéder aux bases de données et de les exploiter. Delphi
répartit ces composants selon les mécanismes d’accès aux données qui diffèrent d’une technologie à l’autre. Sur
la palette des composants, les composants bases de données sont regroupés dans six pages :
La page BDE (Borland Database Engin) : C’est cette page qui nous intéresse le plus. Le modèle BDE
représenté par la page BDE correspond aux composants du moteur d’accès BDE qui constitue une
interface fonctionnelle API qui permet de travailler avec les bases de données. Le modèle BDE est le
meilleur moyen d’exploiter une base de données Paradox ou des tables dBase.
La page ADO (Activex Data Objects)
La page dbExpress
La page InterBase
La Page AccèsBD
DataSource Source de données. Agit comme un conduit entre un composant TTable, TQuery
ou TStoredProc et des composants orientés données, tels que TDBGrid.
Table Récupère les données d'une table physique, via le BDE, et les fournit à un ou plusieurs
composants orientés données par le biais d'un composant DataSource. Inversement, envoie
les données reçues d'un composant vers une base de données physique, via le BDE.
Query Utilise des instructions SQL pour récupérer les données d'une table physique, via le BDE,
et les fournir à un ou plusieurs composants orientés données par le biais d'un composant
DataSource. Inversement, utilise des instructions SQL pour envoyer les données reçues
d'un composant vers une base de données physique, via le BDE.
Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi
La page ContrôleBD
DBGrid Grille de base de données. Grille personnalisée orientée données permettant d'afficher les
données sous forme d'un tableau comme dans une feuille de calcul. Possède des propriétés
TField (définies dans l'éditeur de champs) pour déterminer la visibilité d'une colonne, le
format d'affichage, l'ordre, etc.
DBNavigator Navigateur de base de données. Boutons de navigation orientés permettant de déplacer en
avant ou en arrière le pointeur d'enregistrement dans une table. Le navigateur peut aussi
mettre une table en mode insertion, édition ou consultation seulement, valider des
enregistrements nouveaux ou modifiés et récupérer des données mises à jour pour
rafraîchir l'écran.
DBText Texte de base de données. Libellé orienté données qui affiche la valeur d'un champ de
l'enregistrement en cours.
DBEdit Saisie de base de données. Boîte de saisie orientée données permettant d'afficher et de
modifier un champ de l'enregistrement en cours.
DBMemo Mémo de base de données. Mémo orienté données permettant d'afficher et de modifier du
texte BLOB de l'enregistrement en cours.
DBListBox Boîte liste de base de données. Boîte liste orientée données qui affiche une liste défilable
des valeurs d'une colonne d'une table.
DBComboBox Boîte à options de base de données. Boîte à options orientée données qui permet d'afficher
et de modifier une liste défilable des valeurs d'une colonne d'une table.
DBCheckBox Case à cocher de base de données. Case à cocher orientée données qui permet d'afficher et
de modifier un champ booléen de l'enregistrement en cours.
DBRadioGroup Groupe de boutons radio de base de données. Groupe de boutons radio orientés données
qui affichent l'ensemble des valeurs d'une colonne.
DBLookupListBox Boîte liste de références de base de données. Boîte liste orientée données dont les
éléments proviennent d'un champ de référence défini pour un ensemble de données, ou
d'une source de données, d'un champ de données et de touches secondaires
Remarque :
Dans le cadre de cette formation, nous nous intéresserons surtout au moteur de base de données de Borland,
c'est-à-dire BDE .
Onglet QuickReport
En plus de ces six pages, on trouve également une autre page dans la palette des composants de Delphi qui nous
permet d’afficher les états de sortie : Page QReport.
Remarque :
Cette page n’est pas présente par défaut dans Delphi 7. Par conséquent il faut l’installer.
QuickRep C'est un composant visuel qui adopte la taille du format de papier sélectionné. Vous créez des
états en plaçant des bandes et des composants imprimables sur le composant TQuickRep et en
le connectant à un ensemble de données.
Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi
Delphi met en place un certain nombre d'utilitaires et de mécanismes internes pour qu'une application ait accès
aux données gérées par les différents SGBDR.
Il fournit en particulier un moteur de base de données interne appelé BDE (Borland Database Engine), qui
permet de créer et de gérer des bases de données locales. C'est BDE qui assure par ailleurs la communication
avec les autres bases de données.
Moteur BDE :
Le moteur de base de données Borland BDE (Borland Database Engine ) est l'élément central d'une application
de gestion de base de données créée avec Delphi. Il est inclus directement dans les composants spécifiques
fournis avec Delphi. Un programmeur n'a donc pas à s'en occuper et il n'apparaît pas dans l'arborescence de
l'application créée. Par contre l'exécutable généré est plus important. L'application Delphi créée est
essentiellement constituée d'une l'interface utilisateur permettant d'accéder de manière transparente à BDE.
Pilotes ODBC :
Les pilotes ODBC permettent l'accès à différentes bases de données et serveurs SQL non reconnus directement
par Delphi.
Delphi permet de gérer les applications de bases de données relationnelles. Les bases de données relationnelles
organisent les informations en tables, qui contiennent des lignes (enregistrements) et des colonnes (champs). Ces
tables peuvent être manipulées par des opérations simples appelées calculs relationnels (sélection, projection,
jointure). Sous Delphi, on peut développer une base de données en suivant les étapes suivantes :
Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi
Dans ce paragraphe, nous donnons un exemple de création d’une table Etudiant qui contiendra les champs
suivants :
• Numéro d’immatriculation
• Nom
• Prénom
• Date de naissance
• Adresse
• Numéro de téléphone
Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi
Le module Base de Données Delphi nous permet de créer les tables contenant les données. Il s’agit de l’aspect
statique de votre application. Tandis que pour exploiter ces données, on doit utiliser des composant bases de
données dont dispose Delphi.
Pour ce faire, créez une nouvelle applications Delphi en allant dans : Fichier/Nouveau/Application
Une fois votre nouvelle application créée, ajouter les composant suivants à votre fiche :
• TTable : ce composant se trouve dans l’onglet BDE. Associer le champ DatabaseName au nom de
votre alias, et le champ TableName au nom de votre table (dans notre cas ’est Etudiant.db). Une fois
ce deux propriétés définies, définir la propriété Active à true.
• TDatasource : Associer au champ Dataset de ce composant Table1
• TDBNavigator : comme son nom l’indique, ce composant sert à naviguer dans la base de données.
Naviguer veut dire : se déplacer d’un enregistrement à l’autre en utilisant les boutons suivants :
• TDBGrid : ce composant sert à afficher le contenu de la table Table1. On peur également utiliser ce
composant pour modifier directement le contenu de la table. Pour ce faire, configure la propriété
Datasource à Datasource1.
Remarques :
Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi
• Lorsque vous voulez découvrir les différentes méthodes et propriétés d’un composant Delphi, placez
votre composant sur la fiche et appuyez sur F1 ;
• Vous pouvez accéder aux différentes méthodes et propriétés d’un composant en en tapant le nom du
composant + point+ (CTRL+ESPACE).
• On utilise rarement le navigateur (et une grille) pour réaliser des insertions et suppressions de champs.
Il n'y a pas assez de contrôles de réaliser et l'entrée des données n'est pas très pratique et peut générer
des erreurs (on préférera utiliser une fenêtre spéciale contenant l'ensemble des champs de saisie sous
forme de formulaire). On utilise donc principalement le navigateur pour réaliser des déplacements à
l'intérieur de la base. Il faut donc éliminer les boutons inutiles (cas de manipulation dangereuse) et ne
conserver que ceux que l'on souhaite mettre à la disposition des utilisateurs. Pour cela on sélectionne le
composant Navigateur et on affiche la liste des options accessibles via la propriété VisibleButtons. Il
suffit alors de faire basculer à False les boutons que l'on ne veut pas afficher. L'effet est immédiat dans
la fenêtre de conception et il n'y a plus qu'à redimensionner le navigateur.
Par la suite, cet assistant vous guidera pour obtenir une fiche contenant une interface vous permettant d’interagir
avec votre base de données.
Pour accéder à un champ d’un enregistrement donné, on doit connaître la position du champ ainsi que celle de
l’enregistrement.
Exemple :
Imaginons que le premier enregistrement est le suivant :
Enseignant : N. BOUCHAMA
ECOLE VEGA IP Bases de Données sous Delphi
• Composant Table
Active Indique si la table est ouverte ou non. Le fait de basculer Active à True
ouvre la table est et équivalent à : Table1.Open
DataBaseName Indique l'alias ou le chemin d'accès à la table
Fieldefs Donne des renseignements sur les différents champs de la table.
Fields [i] Permet d'accéder à un champ particulier par son indice (base 0).
IndexName Spécifie un index secondaire. Celui-ci doit avoir été définit dans DBD.
MasterSource Utilisé dans le cas de tables liées.
Modified Indique si un champ de l'enregistrement courant a été modifié.
ReadOnly Empêche l'utilisateur de modifier les données si elle est configurée à true.
RecordCount Indique le nombre d'enregistrements.
State Indique l'état courant de la table.
TableName Nom de la table avec laquelle le composant est lié.
• Composant Datasource
• Composant DBNavigator
Enseignant : N. BOUCHAMA