Schéma relationnel de la base de donnée - ColinMaudry/decp-processing GitHub Wiki

Actuellement - 2025-04-11 - #35 Normalisation tables

Diagram avancement

Lien vers le schéma sous dbdiagram : https://dbdiagram.io/d/Diagram-avancement-67f8b8214f7afba1843461cb

// Schéma pour les marchés publics français
// Utilisation de DBML : https://dbml.dbdiagram.io/docs

// marchés publics - titulaires : N x N
// marchés publics - acheteurs : N x 1
// marchés publics - sous-traitants : N x 1
// marchés publics - acte_sous_traitant : 1 x N

Table marches_publics {
  uid text [pk]
  id text
  nature text
  acheteur_id text [not null] // Clé étrangère vers l'acheteur
  objet text
  montant float
  codeCPV text
  procedure text
  dureeMois bigint
  dateNotification date
  datePublicationDonnees date
  formePrix text
  attributionAvance text
  offresRecues bigint
  marcheInnovant text
  ccag text
  sousTraitanceDeclaree text 
  typeGroupementOperateurs text
  tauxAvance float
  origineUE text
  origineFrance text
  lieuExecution_code text
  lieuExecution_typeCode text
  idAccordCadre text
}

Table acheteurs {
  id text [pk]
  // D'autres attributs (nom, adresse, etc.) pourront être ajoutés
}

Ref marche_acheteurs: marches_publics.acheteur_id > acheteurs.id


Table entreprise {
  id text [pk] // idSousTraitant, titulaire_id
  typeIdentifiant text
  // Autres informations sur le titulaire si nécessaire
}

Table marche_titulaires {
  uid_marche text [not null]
  titulaire_id integer [not null]
  typeIdentifiant text
}

Ref marche_titulaires_marches: marche_titulaires.uid_marche > marches_publics.uid
Ref marche_titulaires_titulaires: marche_titulaires.titulaire_id > entreprise.id
Ref marche_titulaires_titulaires: marche_titulaires.typeIdentifiant > entreprise.typeIdentifiant

Objectif

DATALAB - V4

Lien vers le schéma sous dbdiagram : https://dbdiagram.io/d/DATALAB-V4-67f00d0c4f7afba18464f539

// Schéma pour les marchés publics français
// Utilisation de DBML : https://dbml.dbdiagram.io/docs

// marchés publics - titulaires : N x N --> Dans entreprise
// marchés publics - acheteurs : N x 1 --> Dans entreprise
// marchés publics - sous-traitants : N x N
// acte_sous_traitant : relie marchés public et sous-traitants (dans entreprises)
// marchés_titulaire : relie marchés public et titulaires (dans entreprises)


// Questions :
// Le sous traitant est lié au titulaire ?
// l'acte sous traitant doit etre lié au sous traitant ?
// Modification acte sous traitance est il lié à un acte de sous traitance  ou à un marché? Peut il y en avoir plusieurs ?
// Modification acte marché est il lié à un marché ? Peut il y en avoir plusieurs ?

Table marches_publics {
  uid text [pk]
  id text
  nonunique_id text // id
  procedure text
  nature text
  codeCPV text
  dureeMois bigint
  formePrix text
  objet text
  montant float
  lieuExecution_code text
  lieuExecution_typeCode text
  considerationsSociales text
  considerationsEnvironnementales text
  marcheInnovant text
  ccag text
  offresRecues bigint
  attributionAvance text
  typeGroupementOperateurs text
  sousTraitanceDeclaree text
  idAccordCadre text
  techniques text
  modalitesExecution text
  tauxAvance float
  origineUE text
  origineFrance text
  typesPrix text
  typePrix text
  idSousTraitant text
  idActeSousTraitance text
  source text
  source_open_data text

  // Clé étrangère vers l'acheteur
  acheteur_id text [not null]

  dateNotification date
  datePublicationDonnees date
  EstDernierePublication bool
}

Table acheteurs {
  id text [pk]
  // D'autres attributs (nom, adresse, etc.) pourront être ajoutés
}

Ref marche_acheteurs: marches_publics.acheteur_id > acheteurs.id


Table entreprise {
  id text [pk] // idSousTraitant, titulaire_id
  typeIdentifiant text
  typeActeur text // titulaire, sous-traitant
  // Autres informations sur le titulaire si nécessaire
}

Table marche_titulaires {
  uid text [pk]
  id text
  id_marche text [not null]
  titulaire_id integer [not null]
  ordre integer  // Pour indiquer le rang (titulaire 1, 2, 3, etc.)
  dateNotification date
  datePublicationDonnees date
  EstDernierePublication bool
}

Ref marche_titulaires_marches: marche_titulaires.id_marche > marches_publics.id
Ref marche_titulaires_titulaires: marche_titulaires.titulaire_id > entreprise.id


Table acte_sous_traitance {
  uid text [pk]
  id text // issu de idActeSousTraitance
  marche_public_uid text [not null]
  isSousTraitant text
  dureeMois bigint
  montant float
  variationPrix float  
  dateNotification date
  datePublicationDonnees date
  EstDernierePublication bool
}

Ref acte_sous_traitance_marches: acte_sous_traitance.marche_public_uid > marches_publics.id
Ref acte_sous_traitance_sous_traitant: acte_sous_traitance.isSousTraitant > entreprise.id


// Table modifications_marche {
//   id text [pk]  // issu de idModification
//   marche_public_uid text [not null]
//   dureeMoisModification bigint
//   datePublicationDonneesModification text
//   montantModification float
//   dateNotificationModification text
// }

// Ref modifications_marche_marches: modifications_marche.marche_public_uid > marches_publics.id_marche

// Table modifications_titulaire {
//   id text [pk]  // issu de idTitulaireModification
//   marche_public_uid text [not null]
//   typeIdentifiant text
//   datePublicationDonneesModification text
//   dateNotificationModification text
// }

// Ref modifications_titulaire_marches: modifications_titulaire.marche_public_uid > marches_publics.id_marche


// Table modifications_acte_sous_traitance {
//   id text [pk]  // issu de idModificationActeSousTraitance
//   acte_sous_traitance_id text [not null]
//   dureeMoisModification bigint  // issu de dureeMoisModificationActeSousTraitance
//   dateNotificationModification date  // issu de dateNotificationModificationSousTraitanceModificationActeSousTraitance
//   montantModification float  // issu de montantModificationActeSousTraitance
//   datePublicationDonneesModification date  // issu de datePublicationDonneesModificationActeSousTraitance
// }

// Ref modifications_acte_sous_traitance_acte: modifications_acte_sous_traitance.acte_sous_traitance_id > acte_sous_traitance.id