Skip to content

Latest commit

 

History

History
143 lines (120 loc) · 3.92 KB

002_mcd.md

File metadata and controls

143 lines (120 loc) · 3.92 KB

002 - Modèle Conceptuel de Données DiaLog

  • Date : 2022-11-09
  • Modifié le : 2023-06-13
  • Personnes impliquées : Léa Lefoulon, Florimond Manca, Mathieu Marchois
  • Statut : Accepté

Contexte

Dans le cadre du projet DiaLog, nous sommes amenés à numériser les arrêtés de circulation. Nous avons procédé à une analyse de l'existant afin de mieux cerner la problématique métier et les différents acteurs. Après avoir échangé avec différents calculateurs d'itinéraire comme TomTom, Here (compte rendu disponible ici), il s'avère que le format qui revient le plus souvent est le DATEXII qui est un standard européen qui permet représenter un arrêté de circulation.

Décision

Nous avons décidé d'orienter notre modèle conceptuel de données (MCD) de telle manière qu'il puisse stocker les différentes informations relative au format DATEXII en plus de ceux qui sont plus spécifiques au fonctionnement de DiaLog comme User ou Organization.

Le diagramme ci-dessous sera modifié au fur et à mesure de l'évolution du MCD.

classDiagram
direction TB

class VisaModel {
    uuid*: uuid
    organisation_uuid?: uuid
    name: varchar[100]
    description: varchar[255]
    visas: array
}

class User {
    uuid*: uuid
}

class Organization {
    siret*: char[14]
    name: varchar[255]
}

class RegulationOrderRecord {
    uuid*: uuid
    regulation_order_uuid: varchar[255]
    created_at: datetime
    status: enum["draft", "published"]
}

class RegulationOrder {
    uuid*: uuid
    category: varchar[50]
    other_category_text: varchar[100]
    description: text
    issuing_authority: varchar[255]
    start_date?: date
    end_date?: date
}

class Measure {
  uuid*: uuid
  type: enum["noEntry", "speedLimitation"]
}

class VehicleSet {
    uuid*: uuid
    restricted_types: array
    other_restricted_type_text?: varchar[100]
    exempted_types: array
    other_exempted_type_text?: varchar[100]
}

class Location {
    uuid*: uuid
    road_type: enum["lane", "departmentalRoad"]
    geometry?: geometry
}

class NamedStreet {
    uuid*: uuid
    city_code: varchar[5]
    city_label: varchar[255]
    road_name: varchar[255]
    from_house_number: varchar[8]
    to_house_number: varchar[8]
}

class NumberedRoad {
    uuid*: uuid
    administrator: varchar[255]
    road_number: varchar[50]
    from_side: enum["U", "G", "D"]
    from_abscissa: varchar[5]
    from_point_number: integer
    to_side: enum["U", "G", "D"]
    to_abscissa: varchar[5]
    to_point_number: integer
}

class Period {
    uuid*: uuid
    recurrenceType: enum["everyDay", "certainDays"]
    start_datetime: datetimez
    end_datetime?: datetimez
}

class DailyRange {
    uuid*: uuid
    days: ARRAY[enum["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]]
}

class WeeklyRange {
    uuid*: uuid
    start_day:  enum["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
    start_time: timez
    end_day: enum["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
    end_time: timez
}

class TimeSlot {
    uuid*: uuid
    start_time: timez
    end_time: timez
}

class City {
    insee_code*: varchar[5]
    name: varchar[255]
    departement: varchar[3]
}

User "1..N" -- "1..N" Organization
Organization "0..N" -- "1..1" RegulationOrderRecord
RegulationOrderRecord "0..1" -- "1..1" RegulationOrder
RegulationOrder "1..N" -- "1..1" Measure
Measure "1..N" -- "1..1" Location
Location "0..1" -- "1..1" NamedStreet
Location "0..1" -- "1..1" NumberedRoad
Measure "0..1" -- "1..1" VehicleSet
Measure "0..N" -- "1..1" Period: exception_period
Measure "0..N" -- "1..1" Period: valid_period
Period "0..1" -- "1..1" DailyRange
Period "0..1" -- "1..1" WeeklyRange
Period "0..N" -- "1..1" TimeSlot
VisaModel "0..1" -- "1..N" Organization
Loading