Académique Documents
Professionnel Documents
Culture Documents
II3-GL
Motivations
Toutes les entreprises se trouvent confrontées à la nécessité de mettre
en place de nouvelles applications ou de transférer des données vers
d’autres systèmes,
La consolidation de données issues de systèmes informatiques
hétérogènes constitue un défi majeur, puisque les structures source et
cible sont souvent très différentes.
Le changement continu des besoins du client ( les techniques Agiles)
La mauvaise qualité des données existantes (présence de doublons,
d’erreurs ou de structures de données différentes entre les systèmes
source et cible, par exemple) complique considérablement la
transformation de données.
Par exemple, une colonne peut être utilisée pour stocker la date de naissance
d'une personne si elle est un client ou la date de début si cette personne est un
employé. Pire encore, vous êtes probablement limité dans les fonctionnalités
que vous pouvez désormais prendre en charge. Par exemple, comment
stockeriez-vous la date de naissance d'un employé ?
2. Database Refactoring
Database Smells
➢ Multipurpose table (Table polyvalente): De même, lorsqu'une table est
utilisée pour stocker plusieurs types d'entités, il y a probablement un défaut
de conception.
Par exemple, une table Customer générique qui est utilisée pour stocker des
informations sur les personnes et les sociétés. Le problème avec cette
approche est que les structures de données pour les personnes et les
entreprises diffèrent: les personnes ont un prénom, un deuxième nom et un
nom de famille, par exemple ; alors qu'une société a simplement un nom légal.
Une table Customer générique aurait des colonnes NULL pour certains types
de clients mais pas pour d'autres.
2. Database Refactoring
Database Smells
➢ Redundant data (Redondance des données): Les données redondantes
sont un problème sérieux dans les bases de données opérationnelles car
lorsque les données sont stockées à plusieurs endroits, le risque
d'incohérence se produit. Par exemple, il est assez courant de découvrir
que les informations sur les clients sont stockées dans de nombreux
endroits différents au sein de votre organisation. En fait, de nombreuses
entreprises sont incapables de dresser une liste précise de qui sont
réellement leurs clients. Le problème est que dans une table, John Smith
habite au 123 Main Street, et dans une autre table au 456 Elm Street. Dans
ce cas, il s'agit en fait d'une personne qui habitait au 123, rue Main mais qui
a déménagé l'an dernier; Malheureusement, John n'a pas soumis deux
formulaires de changement d'adresse à votre entreprise, un pour chaque
demande qui le connaît
2. Database Refactoring
Database Smells
➢ Tables with too many columns (Tables avec trop de colonnes): Lorsqu'une
table a plusieurs colonnes, cela indique qu'elle manque de cohésion, qu'elle
essaie de stocker des données de plusieurs entités. Peut-être que votre
table Client contient des colonnes pour stocker trois adresses différentes
(expédition, facturation, saisonnière) ou plusieurs numéros de téléphone
(domicile, travail, portable, etc.). Vous devrez probablement normaliser
cette structure en ajoutant des tables Address et PhoneNumber.
2. Database Refactoring
Database Smells
➢ Tables with too many rows (Tables avec trop de lignes): Les grandes tables
indiquent des problèmes de performances.
Par exemple, la recherche d'une table avec des millions de lignes prend du
temps. Vous souhaiterez peut-être diviser le tableau verticalement en
déplaçant certaines colonnes dans un autre tableau, ou le diviser
horizontalement en déplaçant certaines lignes dans un autre tableau. Les deux
stratégies réduisent la taille de la table, améliorant potentiellement les
performances
2. Database Refactoring
Database Smells
➢ “Smart” column (Colonnes « intelligentes » ): Une colonne intelligente est
une colonne dans laquelle différentes positions dans les données
représentent différents concepts.
Par exemple, si les quatre premiers chiffres de l'ID client indiquent la branche
d'origine du client, l'ID du client est une colonne intelligente car vous pouvez
l'analyser pour découvrir des informations plus détaillées (par exemple, l'ID de
la branche d'origine). Un autre exemple inclut une colonne de texte utilisée
pour stocker des structures de données XML, clairement, vous pouvez
analyser la structure de données XML pour des champs de données plus
petits. Les colonnes intelligentes doivent souvent être réorganisées dans leurs
champs de données constitutifs à un moment donné afin que la base de
données puisse facilement les traiter en tant qu'éléments séparés.
2. Database Refactoring
Database Smells
➢ Fear of change (Avoir Peur du changement): Si vous avez peur de changer
votre schéma de base de données parce que vous avez peur de casser
quelque chose, par exemple les 50 applications qui y accèdent, c'est le
signe le plus sûr que vous devez refactoriser votre schéma. La peur du
changement est une bonne indication que vous avez un risque technique
sérieux sur vos mains, un risque qui ne fera qu'empirer avec le temps.
2. Database Refactoring
Database Refactoring Categories
Database Description Example(s)
Refactoring
Category
Structurelle Une modification de la Déplacer une colonne d'une
définition d'une ou table à une autre ou diviser
plusieurs tables ou une colonne polyvalente en
vues plusieurs colonnes distinctes,
une pour chaque objectif.
Qualité des Un changement qui Rendre une colonne non
données améliore la qualité nullable pour s'assurer qu'elle
des informations contient toujours une valeur ou
contenues dans une appliquer un format commun à
base de données une colonne pour assurer la
cohérence
Intégrité Une modification qui ajout d'un trigger pour permettre
référentielle garantit qu'une ligne une suppression en cascade entre
2. Database Refactoring
référencée existe dans une
autre table et/ou qui garantit
deux entités, code qui était
auparavant implémenté en dehors
qu'une ligne qui n'est plus de la base de données.
D tabase Refactoring Categories
nécessaire est supprimée
de manière appropriée
Risques majeurs :
- La colonne à supprimer peut
contenir des données
- La table contient plusieurs lignes
2. Database
Refactoring
Exemple: Drop
column
2. Database
Refactoring
Exemple: Drop
column
2. Database
Refactoring
Exemple: Drop table