Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
tc_info:2024_cm_modeles [2024/12/18 23:11] – [1. Données numériques] edauce | tc_info:2024_cm_modeles [2024/12/20 08:58] (Version actuelle) – [4.2. Dépendances fonctionnelles] edauce | ||
---|---|---|---|
Ligne 444: | Ligne 444: | ||
< | < | ||
- | **Rappels d’algèbre | + | **Rappels d’algèbre |
* **Relation binaire** : une relation binaire r portant sur deux domaines dom(A) et dom(B): | * **Relation binaire** : une relation binaire r portant sur deux domaines dom(A) et dom(B): | ||
Ligne 791: | Ligne 791: | ||
L’attribut nom_f est maintenant clé primaire de la table Client et clé étrangère de la table Commande. | L’attribut nom_f est maintenant clé primaire de la table Client et clé étrangère de la table Commande. | ||
- | </ | ||
- | |||
- | ===== 5. Modèle ensembliste ==== | ||
- | |||
- | |||
- | <note tip> | ||
- | Pour leur conception, les bases de données sont ici vues comme des ensembles constitués de plusieurs populations d' | ||
- | </ | ||
- | |||
- | ==== Définitions === | ||
- | |||
- | Une base de donnée est constituée de plusieurs ensembles d' | ||
- | |||
- | __Exemple 1 :__ | ||
- | * Ensembles d' | ||
- | * Ensembles de commandes | ||
- | * Ensembles d' | ||
- | * Ensembles de clients | ||
- | |||
- | __Exemple 2 :__ | ||
- | * Ensembles d' | ||
- | * Ensembles de séances | ||
- | * Ensembles de cours | ||
- | * Ensembles de copies | ||
- | |||
- | On parle plus généralement d' | ||
- | |||
- | |||
- | |||
- | <note tip> | ||
- | ** Le modèle entité/ | ||
- | |||
- | Le modèle entité/ | ||
- | |||
- | Le modèle entités/ | ||
- | |||
- | </ | ||
- | |||
- | === Généralités === | ||
- | |||
- | Une **entité** x | ||
- | * est une représentation d'un objet du monde réel, | ||
- | * appartenant au système/à l' | ||
- | * Une entité est décrite par une ou plusieurs valeurs caractéristiques, | ||
- | |||
- | Les informations conservées au sujet des entités d'un ensemble sont les **attributs**. | ||
- | * Chaque **attribut** : | ||
- | * a un **nom** unique dans le contexte de cet ensemble d' | ||
- | * Exemples de noms concrets : // | ||
- | * prend ses valeurs dans un domaine bien spécifié, | ||
- | * également appelé le **type** de l' | ||
- | * Le domaine d'un attribut est noté dom(Aj)=Dj. | ||
- | * Exemples : | ||
- | * dom(couleur)=rouge,vert,bleu,jaune, | ||
- | * dom(nom)=ensemble des chaînes de caractères, | ||
- | * dom(salaire)= entiers naturels | ||
- | * etc... | ||
- | <note important> | ||
- | * Un attribut Aj est une fonction à valeur sur Dj : | ||
- | Aj:E→Dj | ||
- | x↦Aj(x) | ||
- | </ | ||
- | |||
- | <note tip> | ||
- | * Un attribut peut être : | ||
- | * simple ou composé. | ||
- | * Exemple : une //adresse// peut être décrite par une simple chaîne de caractères, | ||
- | * obligatoire ou facultatif (Dj peut ou non contenir la valeur ø ). | ||
- | * atomique ou non (Un attribut peut posséder 0, 1 voire plusieurs valeurs...) | ||
- | </ | ||
- | |||
- | |||
- | Un **ensemble d' | ||
- | E={x1,…,xn} | ||
- | Il regroupe (ou associe) plusieurs entités ayant des caractéristiques communes (descriptibles à l'aide du même ensemble d' | ||
- | |||
- | <note tip> | ||
- | **Exemples** : | ||
- | * les employés d'une firme, | ||
- | * les cours de Centrale Méditerranée, | ||
- | * une collection de disques, | ||
- | * etc… | ||
- | </ | ||
- | |||
- | * Les éléments d’un ensemble d’entités sont // | ||
- | * les attributs (A1,...,Am) servent à décrire les éléments de l’ensemble. | ||
- | * Le schéma R de l’ensemble E est une // | ||
- | * Soit : | ||
- | R:X→D1×...×Dm | ||
- | xi↦(A1(xi),…,Am(xi)) | ||
- | |||
- | <note tip> | ||
- | ** représentation graphique ** : | ||
- | |||
- | {{public: | ||
- | |||
- | </ | ||
- | |||
- | < | ||
- | ** Exemples **: | ||
- | |||
- | {{public: | ||
- | |||
- | |||
- | </ | ||
- | |||
- | | ||
- | |||
- | === Définitions === | ||
- | |||
- | Modéliser une base de données, c'est : | ||
- | * Identifier les différents ensembles en interaction | ||
- | * Identifier les liens de dépendance entre les différents ensembles | ||
- | |||
- | < | ||
- | {{public: | ||
- | </ | ||
- | < | ||
- | {{public: | ||
- | </ | ||
- | < | ||
- | {{public: | ||
- | </ | ||
- | <note tip> | ||
- | Les liens entre les différents ensembles sont appelés des **associations** | ||
- | </ | ||
- | |||
- | === Association === | ||
- | |||
- | <note important> | ||
- | Une association exprime des relations de dépendance entre deux ou plusieurs ensembles d’entités. | ||
- | |||
- | **Définition** : Une **association** entre les ensembles E1, ..., Ek est un sous-ensemble du produit E1×...×Ek. | ||
- | |||
- | Il s'agit donc d'un ensemble de k-uplets {...,(x1,…,xk),…} | ||
- | |||
- | où k est le degré de l' | ||
- | * k=2 : association binaire | ||
- | * k=3 : association ternaire | ||
- | * etc… | ||
- | |||
- | </ | ||
- | |||
- | === Rôles des associations === | ||
- | * // | ||
- | * // | ||
- | * // | ||
- | * // | ||
- | * ... | ||
- | |||
- | |||
- | === Contraintes de cardinalité === | ||
- | |||
- | <note tip> | ||
- | Pour chaque ensemble participant à une association, | ||
- | |||
- | On donne en général un intervalle [binf,bsup] qui définit le nombre d' | ||
- | |||
- | </ | ||
- | |||
- | |||
- | === Représentation graphique === | ||
- | |||
- | **Associations binaires** | ||
- | |||
- | |{{public: | ||
- | |{{public: | ||
- | |{{public: | ||
- | |||
- | **Associations ternaires** | ||
- | |||
- | | {{public: | ||
- | |||
- | |||
- | === Types d' | ||
- | |||
- | **Associations de 1 à plusieurs (fonctionnelle)** | ||
- | |||
- | Relation non symétrique entre les deux ensembles : […,1] d'un côté, […,N] de l' | ||
- | Relation de type contenant/ | ||
- | Il s'agit du type d' | ||
- | |||
- | <note tip> | ||
- | On dit parfois que l’ensemble dont la participation est unique est dit “à gauche” de l’association fonctionnelle, | ||
- | |||
- | “à gauche” → “à droite” | ||
- | </ | ||
- | |||
- | |{{public: | ||
- | |{{public: | ||
- | |||
- | **Associations de plusieurs à plusieurs (croisée)** | ||
- | |||
- | Dans une association “croisée”, | ||
- | |||
- | |{{public: | ||
- | |{{public: | ||
- | |||
- | === Modèles Entité Associations valués === | ||
- | |||
- | <note important> | ||
- | Dans le cadre du modèle entité/ | ||
- | * les attributs des ensembles d' | ||
- | * Soit A un attribut de l' | ||
- | A:E→dom(A) | ||
- | * les attributs des associations sont des // | ||
- | * Soit B un attribut de l' | ||
- | B:E×F→dom(B) | ||
- | </ | ||
- | |||
- | ** Mesures ** | ||
- | * Les mesures sont les données saisies sur les éléments d'un ensemble. Chaque mesure est associée à un attribut. | ||
- | * Le schéma de l' | ||
- | * Les éléments de l' | ||
- | * Une //clé// est un ensemble d' | ||
- | |||
- | <note tip> **TODO** | ||
- | |||
- | Ensembles discernables / non discernables | ||
- | </ | ||
- | ** Opérateurs ** | ||
- | * On s’intéresse ici aux associations qui représentent une “opération” (inscription, | ||
- | * Lors d’une mise à jour de la base, certains événements tels que l’emprunt ou le retour d’un ouvrage, l’affectation d’un employé à un poste, | ||
- | * Il est possible de garder une trace des événements passés en mettant un (ou plusieurs) attributs sur une association. | ||
- | * Ainsi, certaines associations peuvent être " | ||
- | * avoir lieu à une date | ||
- | * ou prendre place sur une durée précise (prêt, | ||
- | * On peut ainsi mémoriser : | ||
- | * " | ||
- | * " | ||
- | |||
- | |||
- | |||
- | <note tip> | ||
- | **Exemple** | ||
- | " | ||
- | |{{public: | ||
- | </ | ||
- | |||
- | <note tip> | ||
- | **Exemple** | ||
- | * Chaque coureur est décrit par ses nom, prénom, nationalité et numéro de maillot. | ||
- | * Chaque coureur appartient à une équipe qui possède un numéro, un sponsor associé. | ||
- | * Chaque coureur participe à une ou plusieurs étapes. Une étape se caractérise par son numéro, son type (contre la montre/ | ||
- | * A chaque étape est associée un classement d' | ||
- | |||
- | |{{public: | ||
- | |||
- | </ | ||
- | |||
- | ==== Traduction vers le modèle relationnel ==== | ||
- | |||
- | Il est possible de traduire un modèle entité/ | ||
- | |||
- | <note tip> | ||
- | Lors de la réalisation d'une base de données, on passe en général par les étapes suivantes: | ||
- | - Conception de la base sous forme d'un modèle entité/ | ||
- | - Traduction sous la forme d'un modèle relationnel. | ||
- | - Normalisation (voir [[https:// | ||
- | - Mise en œuvre informatique. | ||
- | </ | ||
- | |||
- | Un petit nombre de règles permettent de traduire un modèle entité/ | ||
- | * Selon ces règles, à la fois les ensembles d' | ||
- | * Les liaisons et dépendances entre schémas de relation sont assurés par la définition des **clés étrangères** (attributs communs à plusieurs tables). | ||
- | |||
- | === Schéma de base et clé étrangère === | ||
- | |||
- | <note important> | ||
- | * Un schéma (ou modèle) de bases de données est un ensemble fini de schémas de relation. | ||
- | * Une base de données est un ensemble fini de relations. | ||
- | * Les liens et associations entre relations entre s’expriment sous la forme de **clés étrangères** | ||
- | </ | ||
- | |||
- | <note tip> | ||
- | **Définition** | ||
- | |||
- | * Au sein d'un schéma relationnel R, Une clé étrangère est un attribut (ou un groupe d' | ||
- | * La présence d'une clé étrangère au sein d'une relation r de schéma R introduit une contrainte d' | ||
- | * la valeur des attributs de la clé étrangère d'un tuple de r doit être trouvée dans la table s correspondante. | ||
- | * On indique la présence d'une clé étrangère à l'aide de pointillés : {…, __C__l__é__ __é__t__r__a__n__g__è__r__e__, | ||
- | </ | ||
- | |||
- | |||
- | **Exemple ** | ||
- | < | ||
- | **Schéma de base relationnelle** : | ||
- | |||
- | * **Clients** ( __nom_client__, | ||
- | * **Commandes** ( __num_Commande__, | ||
- | * **Fournisseurs** ( __nom_fournisseur__, | ||
- | * **Catalogue** ( __nom_fournisseur, | ||
- | </ | ||
- | |||
- | === Traduction des associations de plusieurs à plusieurs === | ||
- | |||
- | Une association croisée ne contient que des contraintes de cardinalité de type [..,N]. Soit R une telle association et E1, ..., Ek les ensembles participant à l' | ||
- | |||
- | <note important> | ||
- | **Règle de traduction :** | ||
- | * Chaque ensemble Ei est traduit par un schéma relationnel (contenant les mêmes attributs) | ||
- | * L' | ||
- | * les clés primaires des ensembles participant à l’association | ||
- | * (éventuellement) les attributs propres à l' | ||
- | </ | ||
- | |||
- | <note tip> | ||
- | {{public: | ||
- | |||
- | ** Traduction :** | ||
- | * **Pays** (__nom_pays__, | ||
- | * **Matière_première** ( __nom_matière__, | ||
- | * **Exportation** (__n__o__m__ __p__a__y__s, | ||
- | |||
- | </ | ||
- | |||
- | <note tip> | ||
- | {{public: | ||
- | **Traduction** : | ||
- | * **Appareil** (__code_appareil__, | ||
- | * **Séance** (__date, heure, local__) | ||
- | * **Réservation** (__c__o__d__e __a__p__p__a__r__e__i__l, | ||
- | |||
- | </ | ||
- | |||
- | === Traduction des associations de un à plusieurs === | ||
- | |||
- | Soit une association fonctionnelle R. On suppose qu'il existe au moins un ensemble A de cardinalité unique [1,1] participant l’association. | ||
- | |||
- | <note important> | ||
- | **Règle de traduction** | ||
- | * Chaque ensemble participant est traduit sous forme de schéma relationnel | ||
- | * L' | ||
- | </ | ||
- | |||
- | <note tip> | ||
- | **Exemple** : | ||
- | {{public: | ||
- | </ | ||
- | |||
- | <note tip> | ||
- | **Remarque** : lorsque l’association est valuée, les attributs de l’association sont également injectés dans la table représentant l’ensemble de gauche. | ||
- | {{public: | ||
- | </ | ||
- | |||
- | <note tip> | ||
- | **Exemple** | ||
- | {{public: | ||
- | **Traduction** : | ||
- | * **Groupe_TD**( __num_groupe__, | ||
- | * **Entreprise** ( __nom_entreprise__, | ||
- | * **Etudiant** ( __num_etudiant__, | ||
- | </ | ||
- | |||
- | === Exemple complet === | ||
- | |||
- | < | ||
- | **Schéma de base relationnelle** : | ||
- | |||
- | * **Clients** ( __nom_client__, | ||
- | * **Commandes** ( __num_Commande__, | ||
- | * **Fournisseurs** ( __nom_fournisseur__, | ||
- | * **Catalogue** ( __nom_fournisseur, | ||
- | </ | ||
- | < | ||
- | ** Réalisation ** : | ||
- | |||
- | **Clients** : | ||
- | ^__nom_client__^adresse_client^solde^ | ||
- | |Durand|7, rue des Lilas|335, | ||
- | |Dubois|44, av. du Maréchal Louis|744, | ||
- | |Duval|5, place du marché|33, | ||
- | |||
- | **Commandes** : | ||
- | ^__num_Commande__^ __n__o__m__ __c__l__i__e__n__t^ composant^ quantité^ | ||
- | |6674|Dubois|micro controller|55| | ||
- | |6637|Dubois|radio tuner|2| | ||
- | |6524|Durand|transistor|4| | ||
- | |6443|Duval|micro controller|7| | ||
- | |||
- | **Fournisseurs** : | ||
- | ^__nom_fournisseur__^ adresse_fournisseur^ | ||
- | |Sage|33, College street, London| | ||
- | |MoxCom|77 Ashley square, | ||
- | |||
- | **Catalogue** : | ||
- | ^__nom_fournisseur__^ __composant__^ prix^ | ||
- | |Sage|transistor|4, | ||
- | |MoxCom|micro controller|3, | ||
- | |MoxCom|radio tuner|7,0| | ||
</ | </ | ||