Skip to content

Database

Important

We use PostgreSQL as DBMS (Data Base Management System). You will find more information about it here.

Media object definitions

Application

Name Type Description
app_id Integer Application identifier
name String Application name
categorie Integer linked categorie (genre)
rating Float Average of user ratings
reviews String Number of reviews
size String Application size
installs String Number of installations by unique users
type String 'Paid' or 'Free'
price String Price
content_rating String application classification (by age group)
last_updated String last update date
current_version String current app version number
android_version String minimum android version required
cover String cover url
popularity_score Float popularity score (see here)

Important

Unlike other media, applications are linked to only one genre.

Book

Name Type Description
isbn String Book universal identifier
title String Book title
author String Book author
year_of_publication Integer Year of publication
publisher String Publisher company
image_url_s String URL for small image size
image_url_m String URL for medium image size
image_url_l String URL for large image size
rating Float Average rating
rating_count Integer Number of user ratings
popularity_score Float popularity score (see here)

Episode

Name Type Description
episode_id Integer Episode identifier
imdbid String IMDB identifier
title String
year Integer release year
genres String List of genres
serie_id Integer Serie identifier
season_number Integer
episode_number Integer
rating Float Average rating
rating_count Integer Number of user ratings

Game

Name Type Description
game_id Integer Game identifier
steamid Integer Steam game identifier
name String Game name
short_description Text
header_image String
website String URL of official game website
developers String developers company name
publishers String publisher company name
price String
recommendations Integer Number of user recommendations
release_date String
rating Float Average rating
rating_count Integer Number of user ratings
popularity_score Float popularity score (see here)

Movie

Name Type Description
movie_id Integer Movie identifier
title String Movie title
language String Main language
actors String List of main actors separated by '|'
year String Release year
producers String List of producers separated by '|'
director String Name of the director
writer String Name of the writer
imdbid String IMDB movie identifier
tmdbid String TMDB movie identifier
rating Float Average rating
rating_count Integer Number of user ratings
cover String Cover url
plot_outline String synopsis
popularity_score Float popularity score (see here)

Series

Name Type Description
serie_id Integer Serie identifier
imdbid String IMDB identifier
title String
start_year Integer
end_year Integer
writers Text List of writers separated by ','
directors Text List of directors separated by ','
actors Text List of actors separated by ','
rating Float Average rating
rating_count Integer Number of user ratings
cover String Cover url
plot_outline String synopsis
popularity_score Float popularity score (see here)

Track

Name Type Description
track_id Integer Track identifier
title String Track title
year Integer Release year
artist_name String Artist name
release String Realse (album) associated with this track
track_mmid String Million Song track identifier
recording_mbid UUID MusicBrainz track identifier
rating Float Average rating
rating_count Integer Number of user ratings
spotify_id String Track spotify id
covert_art_url Text
popularity_score Float popularity score (see here)

Other objects definition

Genre

Name Type Description
genre_id Integer Genre identifier
name String genre name
count Integer number of user
content_type Enum APPLICATION, BOOK, GAME, MOVIE, SERIE or TRACK

Group

Name Type Description
group_id Integer Group identifier
name String Group name
owner_id Integer User identifier

User

Name Type Description
user_id Integer User internal identifier
uuid UUID User public identifier
email String user email
username String
password_hash String Hashed user password (Bycrypt algorithm)
preferences_defined Boolean

External

Name Type Description
service_id Integer Service internal identifier
user_id Integer User identifier
service_name String
access_token String
refresh_token String

Schema

User - Content relationship

All content is linked with users by meta_user_X table, it will define all metadata between a content and the user:

Example:

  • Explicit metadata: rating
  • Implicit metadata: play_count

Recofinement Data source final schema

Content similarity

All content tables have a "Many to many" relationship with itself, it stores the ratio of similarity between two contents (only the highest will be stored).

Recofinement content similarity schema

Content genres

Recofinement content genre schema

Caution

  • We do not have any data allowing us to define the genre of a book.
  • The applications we have are linked to only one genre.

User social part

A user can create a group, and add other users to this group, the objective is to be able to make recommendations to the group (e.g. Playlist for a party with friends).

Recofinement user social schema

User Interests

A user can like or not a genre.

Recofinement user interests

Content Recommendation for users

All recommendations calculated by Recofinement-engine are stored in this table. This service uses multiple algorithms (called engine) to recommend a user. Each engine calculates a score between 0 and 1 between a user and a content. The closer the score is to 1, the more relevant it will be.

Important

It is not relevant to compare scores between two different engines. That's why we have a column engine_priority

Recofinement user recommended content

Content Recommendation for groups

The mechanism for the recommendation for a group is the same. We see a group object as a user object.

Recofinement group recommended content