concepts

Ce chapitre décrit les principaux concepts utilisés par Datasphere, et le vocabulaire utilisé. Lorsque cela est possible, des termes alternatifs sont donnés. Ceux-ci sont donnés pour faciliter la compréhension des personnes ayant déjà une expérience dans les bases de données. Ces termes alternatifs, et leurs équivalents anglais sont rappelés ici.

Ce chapitre s’adressant à des lecteurs et lectrices aux expériences et bagages techniques différents, il tente d’expliquer chaque concept de (jusqu’à) 3 manières différentes : une description en français, un exemple des structures correspondant en JSON, et un diagramme de classes UML.

Note

Étant donné que ces 3 manières d’expliquer sont équivalentes, vous êtes encouragés à y piocher uniquement ce qui vous « parle » le plus. Par exemple, si vous ne parlez pas le langage UML, n’hésitez pas à ignorer tous ces diagrammes bizarres !

base de données

Une base de données est un ensemble d’informations structurées pour être facilement accessibles, organisées et mises à jour. C’est une manière de stocker, mais surtout d’analyser de l’information sur une thématique donnée.

La vocation d’une base de données n’est pas de modéliser la totalité de la réalité, mais uniquement les concepts, ou entités, nécessaires pour représenter une thématique donnée. En cela, et tout particulièrement dans un contexte scientifique, une base de données représente aussi une vision, une certaine manière d’aborder une problématique de recherche, intrinsèquement liée aux membres de l’équipe qui participent à sa construction.

L’ensemble des entités d’une base de données, ainsi que des attributs de ces entités, est appelé le schéma de cette base de données.

Ce schéma représente est la modélisation complète de la thématique concernée, parfois la réponse à la problématique. C’est la vision de la personne ou de l’équipe conceptrice de la base de données.

Pour pouvoir gérer toutes les bases de données imaginables, Datasphere les abstrait en 5 concepts principaux : entité, propriété, attribut, élément, métadonnée.

@startmindmap
* Base de données
--[#Orange] Propriétés
--[#Sienna] Entités
--[#FireBrick] Attributs
++[#MediumPurple] Éléments
++[#RoyalBlue] Métadonnées
@endmindmap

HERA: 5 concepts abstraits : propriété, entité, attribut, élément, métadonnée

@startuml

entity Entity {
  -id : string
  +name : string
  +description : string
  -attributes : Attribute
  +uri : URI[]
}

entity Property {
  -id : string
  +name : string
  +description : string
  +type : string
  +uri : URI[]
}

class Attribute {
  -id : string
  +name : string
  +description : string
  +type : string
  -property : Property
  +min : int ≥ 0
  +max : int ≥ min
}

entity Item {
  -id : string
  +entity : Entity
  ~metadata : Metadata
  +uri : URI[]
}

entity Metadata {
  -id : string
  ~item : Item
  ~attribute : Attribute
  +value : string
}

Entity    "1" *-- "0..N" Attribute : < définissent
Attribute "0..N" o-- "1" Property : spécialisent >
Item      "0..N" --o "0..1" Entity : < type
Item      "1" *-- "0..N" Metadata : < décrivent
Metadata  "min..max" --o "1" Attribute : < type
@enduml

(UML) HERA: Diagramme de classes : Propriété (Property), Entité (Entity), Attribut (Attribute), Élément (Item), Métadonnée (Metadata)

propriété

Une propriété est une caractéristique réutilisable susceptible d’être déclarée par une ou plusieurs entités d’une base de données.

Chaque propriété est définie par :

  • un libellé (nom) qui permet de l’identifier ;

  • une description qui permet de comprendre comment l’utiliser ;

  • un type qui contraint la valeur qu’il peut prendre ;

  • une URI permettant de l’identifier de manière unique.

@startjson
!include ../../resource/figure/hera.property.json
@endjson

(modèle JSON) Une propriété

@startuml
!include ../../resource/figure/hera.uml
remove Entity
remove Attribute
remove Item
remove Metadata
@enduml

(UML) Diagramme de classes : Propriété (Property)

entité

Une entité est un sujet, un concept en rapport avec la thématique de la base de données à laquelle elle appartient. Une entité est caractérisée par des attributs permettant de définir toutes les informations nécessaires à sa description.

La liste des attributs d’une entité n’a pas forcément vocation à être exhaustive. Il s’agit simplement de modéliser ce dont on a besoin dans le cadre d’une thématique précise.

@startjson
!include ../../resource/figure/hera.entity.json
@endjson

(modèle JSON) Une entité liste ses attributs, dont chacun est l’utilisation concrète d’une propriété abstraite par cette entité

@startuml
!include ../../resource/figure/hera.uml
remove Item
remove Metadata
@enduml

(UML) Diagramme de classes : Propriété (Property), Entité (Entity), Attribut (Attribute)

attribut

Un attribut est l’utilisation par une entité d’une propriété particulière.

Outre l’entité et la propriété qu’il relie, chaque attribut est défini par une cardinalité qui indique son caractère répétable (ou non) ou obligatoire (ou non).

Un attribut peut aussi spécialiser (ie. surcharger) le libellé, la description et le type de la propriété à laquelle il fait référence. Cela n’altère en rien ladite propriété. Cela permet d’en préciser l’usage ou en faciliter la compréhension dans le contexte posé par l’entité.

@startuml
!include ../../resource/figure/hera.uml
remove Property
remove Entity
remove Item
remove Metadata
@enduml

(UML) Diagramme de classes : Attribut (Attribute)

Note

En pratique, la cardinalité d’un attribut est représentée par un nombre minimal (min) et maximal (max) d’occurences de la métadonnée concernée pour chaque élément de l”entité à laquelle l’attribut appartient. Par exemple:

  • si la métadonnée est obligatoire pour chaque élément de cette entité, min vaut 1

  • si la métadonnée est au contraire optionnelle, min vaut 0

  • si la métadonnée n’est pas répétable, max vaut 1

  • si la métadonnée est répétable, max vaut … autant que vous voulez !

élément

Un élément est un agrégat / composite d’information. Chaque élément est la manifestation concrète d’une entité. En conséquence, chacun de ses attributs possède une valeur. Chacune de ces valeurs constitue une information « atomique » à propos de l’élément, appelée métadonnée.

@startjson
!include ../../resource/figure/hera.item.json
@endjson

(modèle JSON) Un Élément est simplement la liste de ses métadonnées ; chaque métadonnée est la valeur concrète d’une propriété.

@startuml
!include ../../resource/figure/hera.uml
remove Entity
remove Property
remove Attribute
@enduml

(UML) Diagramme de classes : Élément (Item), Métadonnée (Metadata)

métadonnée

Une métadonnée est un élément atomique d’information. Elle n’a de sens que si elle est associée à d’autres métadonnées ; l’agrégat ainsi formé est un élément. Elle est obligatoirement relative à un attribut dont elle représente la valeur pour cet élément (ou une des valeurs, si l’attribut est répétable).

référence

Une référence est un lien unique, direct, vers un autre élément. Il s’agit d’un type spécifique de métadonnée.

relation

Une relation est une association avec entre deux éléments.