Objectif général : Concevoir une base de données
Objectifs opérationnels :
- Comprendre les différents concepts entourant les BD
- Comprendre les concepts associés aux BD relationnelles
- Établir un dictionnaire de données (DD)
- Structurer les données du DD
- Construire un Modèle Conceptuel des Données (MCD)
- Transformer un MCD en Modèle logique de données (MLD)
- Normaliser un MLD
SQL est un langage standard pour stocker, manipuler et récupérer des données dans des bases de données.
dans mon cours SQL vous apprendra à utiliser SQL dans : MySQL, SQL Server, MS Access, Oracle, Sybase, Informix, Postgres et d'autres systèmes de base de données.
Alphorm.com Formation MySQL Administration(1Z0-883)Alphorm
La formation complète est disponible ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-mysql-1z0-883
MySQL est devenu le serveur de bases de données issu du monde libre le plus largement adopté par les entreprises.
A l'issue de cette formation, vous saurez installer et administrer MySQL au quotidien, d'une manière efficace et sécurisée.
Cette formation traite aussi des notions avancées de MySQL : réplication, sécurité, sauvegarde, performances et optimisation.
Cet exposé donnera un aperçu du paysage NoSQL et une classification pour les différentes catégories architecturales, clarifiera les concepts de base et la terminologie, et fournira une comparaison des caractéristiques, des forces et des inconvénients des projets les plus populaires (CouchDB, MongoDB , Riak, Redis, Membase, Neo4j, Cassandra, HBase, Hypertable).
Les bases de données NoSQL bénéficient d'une large couverture médiatique, mais il semble y avoir beaucoup de confusion autour de celles-ci, comme dans quelles situations elles fonctionnent mieux qu'une base de données relationnelle, et comment choisir l'une plutôt qu'une autre.
Les jointures sont un moyen en Transact-SQL pour récupérer des informations provenant de plusieurs objets distincts, qu’il s’agisse de tables, tables temporaires ou vues en utilisant si, possible, leurs clefs primaires et étrangères.
SQL Server comprend deux types de syntaxe pour respecter une compatibilité ascendante :
- Le standard ANSI SQL 89 utilisé sur les SGBD SQL Server 6.5 et 7
- Le standard ANSI SQL 92 exploité réellement à partir de la version 2000 de SQL Server
Il existe différents types de jointures, chacune répondant à des besoins précis :
- Les jointures internes,
- Les jointures externes,
- Les jointures multiples,
- L’auto-jointure.
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
Cet exposé donnera un aperçu du paysage NoSQL et une classification pour les différentes catégories architecturales, clarifiera les concepts de base et la terminologie, et fournira une comparaison des caractéristiques, des forces et des inconvénients des projets les plus populaires (CouchDB, MongoDB , Riak, Redis, Membase, Neo4j, Cassandra, HBase, Hypertable).
Les bases de données NoSQL bénéficient d'une large couverture médiatique, mais il semble y avoir beaucoup de confusion autour de celles-ci, comme dans quelles situations elles fonctionnent mieux qu'une base de données relationnelle, et comment choisir l'une plutôt qu'une autre.
Les jointures sont un moyen en Transact-SQL pour récupérer des informations provenant de plusieurs objets distincts, qu’il s’agisse de tables, tables temporaires ou vues en utilisant si, possible, leurs clefs primaires et étrangères.
SQL Server comprend deux types de syntaxe pour respecter une compatibilité ascendante :
- Le standard ANSI SQL 89 utilisé sur les SGBD SQL Server 6.5 et 7
- Le standard ANSI SQL 92 exploité réellement à partir de la version 2000 de SQL Server
Il existe différents types de jointures, chacune répondant à des besoins précis :
- Les jointures internes,
- Les jointures externes,
- Les jointures multiples,
- L’auto-jointure.
Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing
Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !
The document discusses approaches for making software development more environmentally sustainable, referred to as "green coding" or "eco-coding". It outlines code smells and inefficiencies that can negatively impact energy usage and device lifespan. It then introduces ecoCode, an open source plugin for the SonarQube platform that helps developers identify such issues through static analysis and provides metrics to track sustainability improvements over time. The document argues ecoCode can help establish best practices for green software development while avoiding limitations of existing tools through its community-driven approach.
PowDroid: Energy Profiling of Android Applications (ASE 2021 [Workshop] SUSTA...Olivier Le Goaër
While the energy efficiency of mobile apps is receiving considerable attention in recent years, Android developers have little tools to assess the energy footprint of their applications. In this paper, we introduce PowDroid, our tool to estimate the energy consumption of Android application. It uses system-wide metrics and does not require access to applications' source code. We run PowDroid on a use-case scenario comparing the energy footprint of applications in different categories.
Nowadays, energy efficiency is recognized as a core quality attribute of applications (apps) running on Android-powered devices constrained by their battery. Indeed, energy hogging apps are a liability to both the end-user and software developer. Yet, there are very few tools available to help developers increase the quality of their native code by ridding it of energy-related bugs. Android Studio is the official IDE for millions of developers worldwide and there's no better place to enforce green coding rules in everyday projects. Indeed, Android Studio provides a code scanning tool called Android lint that can be extended with lacking green checks in order to foster the design of more eco-responsible apps.
GREEN PAUWARE - For a power-thrifty mobile app marketplaceOlivier Le Goaër
Energy-intensive mobile applications are a burden for both end users and devel-opers, and ultimately are harmful to the planet. The objective of the GREEN PAUWARE project is to break these bad habits by creating an energy label for applications (ranging from A to G), as exists in other areas. Many authors agree on the necessity of an eco-score or ranking within the mobile apps market, but research is hampered by the complexity and lack of available tools.
This presentation proposes milestones to achieve this objective. In particular, it introduces an ecological bonus-malus system applied to Android development projects to try to give a score to applications. Then, it shows how to use a static code analysis tool like Android Lint to implement such a system. Finally, it features a distributed software architecture to collect scores and push labels towards end users so they can make informed decisions when installing applica-tions on their Android-powered devices.
This document summarizes a presentation given by Olivier Le Goaër on executable modeling and dynamic adaptation. It provides a short biography of Le Goaër, discusses domain-specific languages and different shapes they can take, and how models are taking on a more dynamic role at runtime. It explores controversies around executable models and components of executable modeling built with model-driven engineering. Finally, it discusses approaches to executable modeling, model adaptation, and implementation choices for adaptive executable modeling.
Apprenez à écrire vos macros pour le tableur Excel en Visual Basic. Cette formation couvre les rudiments de programmation ainsi que la découverte de l'API Excel
Ma critique de cette technologie sur http://olegoaer.developpez.com/cours/vba/
Android executable modeling: beyond android programmingOlivier Le Goaër
This document discusses executable modeling for Android applications using statecharts. It presents a toy "Energy Assistant" mobile app modeled as a statechart to demonstrate the approach. The statechart model is executed on Android using the PauWare execution engine and an architecture that interfaces with Android events and actions. Executable modeling shifts efforts from programming to modeling and allows updating an app by loading a new model while keeping action implementations unchanged. This facilitates rapid prototyping and updating of Android apps through modeling rather than traditional programming.
Yet another DSL for cross platforms mobile developmentOlivier Le Goaër
This document presents the XMOB solution for cross-platform mobile development. XMOB is a domain-specific modeling language that allows developers to write mobile applications independently of platforms in a platform-independent model. The XMOB compiler then transforms the model into native code for different mobile platforms like Android and iOS. XMOB has sublanguages for defining user interfaces, data sources, and events. The compiler uses EMF and Xtext to parse XMOB models and Kermeta transformations to generate platform-specific UML models and native code. Examples of XMOB code show how to define screens, buttons, lists, data fetching, and event handling.
2. ÉTAT DES LIEUX
Langage informatique normalisé servant à exploiter des bases de données
relationnelles
Créé en 1974, il est depuis devenu incontournable
L’immense majorité des systèmes de gestion de bases de données relationnelles
(abrégé SGBD-R) du marché le supporte, à quelques variations près
MySQL, Oracle Database, Microsoft Access, PostgreSQL, SQLite…
Les choses bougent avec la tendance « NoSQL » (Not Only SQL)
3. BASE DE DONNÉES RELATIONNELLES
L’information est organisée dans des tableaux à deux dimensions appelés des
relations ou tables
Les lignes de ces relations sont appelées des n-uplets ou enregistrements
Les colonnes sont appelées des attributs
Une relation (au sens du modèle de Codd) est constituée de deux choses :
Un Schéma : Le format de la table (incluant types et contraintes). Le schéma est fixé ;
Une Extension : Le contenu de la table, qui est un ensemble de n-uplets dont l'ordre n'a pas
d'importance, et sans doublons
Le qualificatif « relationnelle » d’une BDD ne fait ainsi aucunement
référence au fait que les tables peuvent être reliées entre elles.
4. EXEMPLES DE RELATIONS (SPORT)
Dossard Nom Prenom Club
503 Afond Jocelyne AP
123 Véloce Marc NULL
229 Le Goaër Olivier TDB
303 Speedy Nadine AP
271 Pressé Marc E64
404 Asphalte Didier NULL
Code Intitule Pro?
AP Aigles de Pau No
E64 Endurance 64 Yes
ASM ASM Mourenx No
TDB Touristes du Béarn No
Relation « Coureur »
Relation « Club »
6. LANGAGE DE MANIPULATION DE DONNÉES
Sous-ensemble du SQL utilisé pour ajouter, consulter, modifier, et supprimer des
données des tables existantes
Correspond aux commandes SQL : INSERT, SELECT, UPDATE, DELETE
Syntaxe générale d’une requête pour consulter des données :
SELECT attributs -- ce que l'on cherche
FROM relations -- où on cherche
[WHERE condition] -- avec quelles conditions
[GROUP BY attributs] -- en utilisant
[HAVING condition] -- des sous-ensembles
[ORDER BY attributs] -- résultat dans quel ordre
7. SELECTION D’ATTRIBUTS
Le mot clé SELECT vous permet de ne conserver que les attributs qui vous intéressent
Vous pouvez en profitez pour les renommer à l’affichage : les « alias »
Vous pouvez appliquer des fonctions scalaires et des calculs sur les attributs
Vous pouvez forcer l’élimination des doublons apparus potentiellement
SELECT Dossard, Nom --ou * si vous les voulez tous
SELECT Dossard, Nom as NomPatronimique
SELECT (Dossard * 3) + 1, LEFT(Nom, 3) as PetitNomPatronimique
SELECT DISTINCT Prenom
8. TABLE(S) SOURCE(S)
Il faut évidemment définir d’où proviennent vos attributs avec le mot clé FROM
Il faudra lever les ambiguïtés quand il y aura plusieurs tables en jeu (Voir suite)
Vous pouvez donner un alias à la table et s’y référer au niveau des attributs
Ou vous pouvez utiliser une notation explicite en préfixant l’attribut par sa table d’appartenance
SELECT Dossard, Nom FROM Coureur
SELECT c1.Dossard, c1.Nom FROM Coureur as c1
SELECT Coureur.Dossard, Coureur.Nom FROM Coureur
SELECT * FROM Club
9. TRI DES RESULTATS
Vous pouvez utiliser les attributs pour trier les résultats avec le mot clé ORDER BY
Vous pouvez choisir de trier dans l’ordre croissant (par défaut), ou décroissant
Vous pouvez opérer le tri à plusieurs niveaux, en cas de valeurs identiques
SELECT Dossard, Nom FROM Coureur ORDER BY Dossard
SELECT Dossard, Nom FROM Coureur ORDER BY Dossard ASC --tri croissant
SELECT Dossard, Nom FROM Coureur ORDER BY Dossard DESC --tri décroissant
SELECT Dossard, Nom FROM Coureur ORDER BY LEFT(Nom, 3), Dossard ASC
10. FILTRAGE DES RESULTATS
Vous pouvez éliminer les n-uplets qui ne vous intéressent pas avec le mot clé WHERE
Dis autrement, vous cherchez à conserver ceux qui satisfont une condition logique déterminée
Vous pouvez exprimer des conditions d’(in)égalité, de ressemblance ou de nullité
Vous pouvez construire des conditions complexes à l’aide de connecteurs logiques
SELECT Dossard, Nom FROM Coureur WHERE Dossard > 102
SELECT Dossard, Nom FROM Coureur WHERE Nom = "Le Goaër"
SELECT Dossard, Nom FROM Coureur WHERE Nom like "*Go??r" --Cf. RegExp
SELECT Dossard, Nom FROM Coureur WHERE (not (LEFT(Nom, 3)
= "Le ") or (Dossard >= 50 and Dossard <= 300))
SELECT Dossard, Nom FROM Coureur WHERE Club is NULL
11. JOINTURE (INTERNE)
Sert à reconstituer l’information éclatée entre deux tables, à l’aide du mot clé JOIN
1. Produit cartésien : combinaison de chaque n-uplet d’une table avec ceux de l’autre table
2. Un critère spécial doit être satisfait pour les apparier deux à deux : la condition de jointure
La condition de jointure après le mot clé ON n’est pas forcément basique ni naturelle
Ce mécanisme est généralisable à n tables, mais exige une rigueur syntaxique
SELECT * FROM Coureur INNER JOIN Club ON Coureur.club = Club.code
SELECT * FROM Coureur INNER JOIN Club ON LEFT(Coureur.nom, 3) = Club.code
SELECT * FROM (((T1 INNER JOIN T2 ON Cond1)
INNER JOIN T3 ON Cond2)
INNER JOIN T4 ON Cond3)
12. JOINTURE (EXTERNE)
Parfois, ne pas réussir à reconstituer l’information éclatée entre deux tables, est une
information en elle-même ! (Cf. « l’hypothèse du monde clos »)
La non-satisfaction du critère de jointure fait apparaître des valeurs nulles (NULL) sur des attributs
appariés, qui pourront par exemple servir à filtrer
Une table parmi les 2 est considérée comme table de référence lors de cette jointure,
selon qu’elle se trouve à gauche ou à droite dans le sens d’écriture de votre requête
SELECT * FROM Coureur RIGHT OUTER JOIN Club ON Coureur.Club = Club.code
WHERE Coureur.Dossard is NULL
SELECT * FROM Club LEFT OUTER JOIN Coureur ON Coureur.Club = Club.code
WHERE Coureur.Dossard is NULL --100% équivalent à ci-dessus
13. GROUPES ET FONTIONS DE GROUPES
L’ensemble des n-uplets forme un groupe par défaut, sur lequel il est possible
d’appliquer des « fonctions de groupes »
Il s’agit de fonctions spéciales d’agrégation statistiques
Fonctions natives : AVG(), COUNT(), MIN(), MAX(), SUM(), SDTEV(), VAR()
Vous pouvez explicitement former des sous-groupes, à plusieurs niveaux, avec GROUP BY
La sélection peut contenir tout au plus les attributs ayant servis à grouper,
mais autant de fonctions de groupes que vous le souhaitez.
SELECT MAX(Dossard) FROM Coureur
SELECT Club, COUNT(Dossard) FROM Coureur GROUP BY Club
14. FILTRAGE SUR FONCTIONS DE GROUPE
Si un filtrage doit porter sur une fonction de groupe, elle ne peut figurer derrière
WHERE. Elle est introduite par la clause HAVING
SELECT Club, COUNT(Dossard) as Inscrits FROM Coureur GROUP BY Club
HAVING COUNT(Dossard) > 2
Il est fréquent d’appliquer des alias aux fonctions de groupe. Toutefois,
ces alias ne peuvent pas être référencés depuis le HAVING.
15. SOUS-REQUÊTE
Les expressions à l’intérieur d’une requête peuvent être remplacée par…une requête
Si la sous-requête ne renvoie pas une valeur unique mais des n-uplets, alors il faut
utiliser les opérateurs IN, EXISTS, ANY, ALL
Parfois, la sous-requête peut être corrélée : elle ne s’exécute pas indépendamment
Ses valeurs dépendent alors de celles de la requête hôte,
Les alias de tables sont incontournables pour lever les ambiguïtés.
SELECT * FROM Coureur WHERE Dossard < (SELECT MAX(Dossard) FROM Coureur)
SELECT * FROM Coureur WHERE Club IN (SELECT Code FROM Club WHERE Pro?=Yes)
16. EXÉCUTION DES REQUÊTES
SQL est un langage déclaratif : il dit ce qu’il faut faire, mais pas comment le faire !
C’est le SGBD-R qui choisira la façon optimale d’exécuter votre requête. Néanmoins,
l’ordre logique de traitement est grosso modo le suivant :
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. HAVING
7. SELECT
8. DISTINCT
9. ORDER BY