Structuration données NBA
Compte rendu : Structuration données NBA. Recherche parmi 300 000+ dissertationsPar HugoPse • 20 Décembre 2019 • Compte rendu • 1 085 Mots (5 Pages) • 602 Vues
[pic 1][pic 2][pic 3]
RAPPORT DE PROJET
UE : Structuration de données
Professeur référent :
Contexte du projet :
Le projet proposé consiste à alimenter une base de données PostgreSQL avec des données d’une API en ligne. Le choix de l’API et de la méthode employée sont libres. Les données doivent être propres et structurées.
Solution projet :
Création de la base de données :
Nous avons choisi de créer directement notre base de données PostgreSQL via le site Elephant. Il permet en effet de créer une base de données rapidement. Avec la version gratuite d’Elephant, nous avons ainsi créé une base de données de 20 Méga.
Création du MCD :
Pour pouvoir alimenter la base et produire des statistiques, il a fallu créer un MCD. Pour cela, nous avons utilisé le logiciel MERISE qui est en OpenSource.
[pic 4]
Image 1: MCD de notre base de données
Nous avons donc 5 tables :
- NBA TEAM : table contenant les informations sur les équipes de NBA
- NBA_PLAYER : table contenant les informations sur les joueurs de NBA
- PLAYER_POSITION : table des différentes positions
- STATISTICAL_LINE : table de statistiques
- NBA_GAME : table contenant les informations sur les matchs
Connexion à notre base PostgreSQL à partir de R :
Il existe un package développé sous R qui permet de se connecter directement à une base de données PostgreSQL. C'est le package "RPostgreSQL".
Ci-dessous le code pour se connecter à la base :
library(RPostgreSQL)
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv,
host = "dumbo.db.elephantsql.com",
dbname = "whjsfstu",
user="whjsfstu",
password="5OUW5WRN23L-QHXOUwGbUQz0I8ULbuB0")
Génération des tables :
Nous créeons l'ensemble des tables à l'aide d'une requête SQL. C'est le package RPostgreSQL qui nous permet directement de compiler du SQL dans la console R, à l'aide de la fonction sql_command.
sql_command<- "
CREATE TABLE public.PLAYER_POSITION(
IdPosition SERIAL NOT NULL ,
PositionName VARCHAR (10) NOT NULL ,
CONSTRAINT PLAYER_POSITION_PK PRIMARY KEY (IdPostition)
)WITHOUT OIDS;
CREATE TABLE public.NBA_TEAM(
IdTeam SERIAL NOT NULL ,
NameTeam VARCHAR (50) NOT NULL ,
SlugTeam VARCHAR (3) NOT NULL ,
NameConference VARCHAR (5) NOT NULL ,
UrlLogoTeam VARCHAR (300) ,
CONSTRAINT NBA_TEAM_PK PRIMARY KEY (IdTeam)
)WITHOUT OIDS;
CREATE TABLE public.NBA_PLAYER(
IdPlayer SERIAL NOT NULL ,
NamePlayerFirst VARCHAR (60) NOT NULL ,
NamePlayerLast VARCHAR (60) NOT NULL ,
AgePlayer INT NOT NULL ,
IsRookie BOOL NOT NULL ,
UrlPlayerHead VARCHAR (300) ,
IdPosition INT NOT NULL ,
IdTeam INT NOT NULL ,
CONSTRAINT NBA_PLAYER_PK PRIMARY KEY (IdPlayer)
,CONSTRAINT NBA_PLAYER_PLAYER_POSITION_FK FOREIGN KEY (IdPosition) REFERENCES public.PLAYER_POSITION(IdPosition)
,CONSTRAINT NBA_PLAYER_NBA_TEAM0_FK FOREIGN KEY (IdTeam) REFERENCES public.NBA_TEAM(IdTeam)
)WITHOUT OIDS;
CREATE TABLE public.NBA_GAME(
IdGame INT NOT NULL ,
RoleTeam VARCHAR (1) NOT NULL ,
DateGame DATE NOT NULL ,
IsWin BOOL NOT NULL ,
IdTeam INT NOT NULL ,
CONSTRAINT NBA_GAME_PK PRIMARY KEY (IdGame,RoleTeam)
,CONSTRAINT NBA_GAME_NBA_TEAM_FK FOREIGN KEY (IdTeam) REFERENCES public.NBA_TEAM(IdTeam)
)WITHOUT OIDS;
CREATE TABLE public.STATISTICAL_LINE(
IdStatLine SERIAL NOT NULL ,
MinutePlayed VARCHAR (3) NOT NULL ,
PointScored INT NOT NULL ,
TotalRebound INT NOT NULL ,
DecisivePass INT NOT NULL ,
Steal INT NOT NULL ,
Block INT NOT NULL ,
Turnover INT NOT NULL ,
...