@startuml ' PARAMETERS skinparam linetype polyline skinparam linetype ortho title Base de données trafic V2I package "Composant" #87CEEB { abstract class Noeud { +ajouter_capteur() : void +transfér_capteur(N1:Capteur,N2:Capteur): Capteur +supprimer_capteur():void } Noeud"1" *-- "0..*,1..*"Capteur class Capteur Class Capteur{ + numéro_série : int + modéle : string } note bottom of Capteur : (numéro_série, modéle) primary key note top of Capteur : les infrastructutres ont au moins un capteur class Infrastructure { +id :int {unique} } package Composant_mobile #483D8B { class Véhicule { +numéro_immatriculation : integer +marque : string +modéle : string +annee_production : date } enum Type_voiture_spéciale { ORDINAIRE SAMU POMPIER POLICE } class Moto{ +capacité_moto : integer } class Camion{ +capacite_maximale : integer } class Voiture { +type_voiture : Type_voiture_spéciale } } } Noeud "1..*" - "1" Noeud (Noeud, Noeud) .. Communication package "Communication" #4169E1 { class Communication { +type_communication : Type_communication } enum Type_communication { UN_A_UN UN_A_PLUSIEURS } } package "Evenement" #DDDDDD { abstract class Evenement { +timestamp :date +id_entite : integer +contenu {unique} :text } class accident { +gravité : integer +nombre_véhicule : integre +type_véhicule[1..*] : sting } class alert_meteo { +temps : string +température : integer } class detection_materiel { } class traveau_routier { } } package "localisation" #5F9EA0 { class Position { +longitude : float +latitude : float } class Commune { +nom : string +code_postal : integer } Commune "1" --"*" Position : appartient Noeud "1"--"1"Position : se trouve dans } Noeud <|-- Infrastructure Noeud <|-- Véhicule Capteur "1" -- "*" Evenement : détecte Evenement <|-- accident Evenement <|-- alert_meteo Evenement <|-- detection_materiel Evenement <|-- traveau_routier Véhicule <|-- Voiture Infrastructure -[hidden]-> Capteur Véhicule -[hidden]-> Capteur Véhicule <|-- Moto Véhicule <|-- Camion Evenement "*" -- "1" Commune : se déroule dans Camion "0..1"--"*" Voiture : transporte Communication "1" *-- "1" Evenement: produit @enduml