Code Monkey home page Code Monkey logo

openflightstatisticsaggregator's Introduction

Projet S6

Partie I: normalisateur et injecteur de données

Installation

Se rendre dans le dossier du projet, et installer les dépendances:

~$ cd DatabaseNormalizer
~/DatabaseNormalizer$ sudo make install

Note: permission sudo indispensable pour le téléchargement de la librairie pathlib2 depuis pip3.

Tester le projet

Se rendre dans le dossier du projet, et lancer la directive de test:

~$ cd DatabaseNormalizer
~/DatabaseNormalizer$ make test

Note: la directive de test va automatiquement explorer tous les sous dossiers et fichiers de tests existants et les lancer à la suite.

Requetes de la base de données - Partie 1

Note: pour requeter la base de données, un simple script Python peut-être utilisé:

import sqlite3


def perform_request(country_name: str = 'Ireland'):
    conn = sqlite3.connect('ppii.db')
    curs = conn.cursor()

    sql = f'select * from airport, city, country ' \
          + 'where airport.id_city = city.id ' \
          + 'and city.id_country = country.id ' \
          + 'and country.name like "{country_name}"'

    curs.execute(sql)

    print('Liste des aéroports dans un pays donné:')
    for line in curs.fetchall():
        print(line)

    conn.close()


if __name__ == '__main__':
    perform_request()

Requête 1

But: Liste des aéroports dans un pays donné

Requête:

SELECT
    *
FROM
    airport,
    country,
    city
WHERE
    airport.id_city = city.id
    AND
    city.id_country = country.id
    AND
    country.name = "France";

Requête 2

But: Liste des aéroports situés à une certaine distance d'un autre aéroport donné en référence

Requête:

  • Version MySQL (avec opérateurs trigonométriques en utilisant le rayon de la Terre)
SELECT
    b.name
FROM
    airport a,
    airport b
WHERE
    a.name = 'Worms Airport'
    AND (
        ACOS(
            COS(a.latitude * PI() / 180)
            * COS(b.latitude * PI() / 180)
            * COS((b.longitude * PI() / 180)
            - (a.longitude * PI() / 180))
            + SIN(a.latitude * PI() / 180)
            * SIN(b.latitude * PI() / 180)
        ) * 6371
    ) < 100
    AND a.id != b.id;
  • Version SQL pure (en utilisant la norme du vecteur formé par les deux aéroports)
SELECT
    b.name
FROM
    airport a,
    airport b
WHERE
    a.name = 'Worms Airport'
    AND (
        ABS(a.latitude - b.latitude)
        - ABS(a.longitude - b.longitude)
    ) * 111.32 <= 100
    AND a.id != b.id;

Requête 3

But: La durée moyenne des vols à destination de Paris utilisant un A380

Requête:
Ne disposant d'aucune information sur la durée de vol ou la vitesse de chacun des appareils, cette requête n'est pas réalisable par simple requêtage de la base de données.

Requête 4

But: Le vol le plus court et le plus long à destination de New York

Requête:
N'ayant aucune information sur le distance des vols (comme dit précédement), cette requête n'était pas réalisable. De plus, le rôle d'une base et d'un sgbd n'est pas d'effectuer ce genre de traitements et algorithmes, il en relève du back office.

Requête 5

But: Le vol avec le plus d'escales dans un même pays

Requête:

SELECT
   a.id, co.name, COUNT(s.id)
FROM
    airway a,
    step_in s,
    airport ai,
    city ci,
    country co
WHERE
    s.id_airway = a.id
    AND
    s.id_airport = ai.id
    AND
    ai.id_city = ci.id
    AND
    ci.id_country = co.id
GROUP BY a.id, co.id
ORDER BY COUNT(s.id) DESC;

Requête 6

But: La liste ordonnées des paires de companies qui collaborent le plus sur les trajets avec escale

Requête:
Nous n'avons pas de moyens de suivre un vol à travers différentes escales s'il emprunte différentes compagnies. Ainsi, il nous est impossible de réaliser cette requête.

Requête 7

But: Par pays, la liste des compagnies qui sont présentes dans tous les aéroports ou à défaut la compagnie la plus présente

Requête:

Non réalisée

Partie II: communication C

Installation

Se rendre dans la partie du projet correspondante, et executer le Makefile.

Organisation du projet

  • main.c sert de point d'accès à cette partie du projet
  • dal/ regroupe les outils de communication avec la base de données
  • tcp/ regroupe des valeurs remarquables utilisées dans le projet (pour les erreurs par exemple)
  • log/ regroupe les outils permettant de logger des valeurs ou textes dans la console
  • client/ et server/ regroupent la logique propre à chaque membre destiné à communiquer sur le réseau
  • algorithms/ regroupe la structure de graph utilisée ainsi que les outils qui l'accompagne; mais aussi l'implémentation de a* et dijkstra

Partie III:

non communiquée

openflightstatisticsaggregator's People

Contributors

oster avatar pbouillon avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.