Database Flashcards

1
Q

Qu’est ce qu’une requête préparée ?

A

Les requêtes préparées sont des queries SQL sans les données.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Pourquoi les requêtes préparées empêchent l’injection SQL ?

A

Les données injectées ne sont plus considérés comme du code SQL, mais véritablement comme des données

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Comment créer une relation many to many en database ?

A

Il faut une table pivot, qui contient les clés primaires qui associe les 2 tables.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

A quoi sert Group By en SQL?

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

A quoi sert Having en SQL ?

A

Appliquer des conditions avec des fonctions (sum, avg…)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Quelle différence entre Desc et Asc ?

A

Desc ordre décroissant, Asc ordre croissant

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quel est le mode de tri par défaut dans SQL ?

A

C’est ASC (croissant)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Comment donner un alias à un champ, table.. en SQL ?

A

Avec AS, ou juste après le nom du champ/table

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Comment limiter le nombre de résultat en SQL ?

A

LIMIT n

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

A quoi sert le switch case en SQL ?

A

Afficher dynamiquement un output en fonction d’un champ de la ligne

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quelle est la condition pour faire un UNION ?

A

le même type de colonne, et le même ordre.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Est-ce que LIMIT réduit le temps d’exécution ?

A

Non, on récupère toutes les lignes, et ensuite on tronque

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

A quoi sert l’INNER JOIN ?

A

Obtenir l’intersection de 2 tables

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

A quoi sert le CROSS JOIN ?

A

Faire le produit cartésien des tables (donc chaque ligne de la table A possède chaque autres lignes B )

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

A quoi sert LEFT JOIN ?

A

Récupérer toutes les lignes de la table A + celles qui match avec la table B. Associe null si aucune ligne trouvée dans B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

A quoi sert RIGHT JOIN ?

A

Comme Left Join, mais en inversant A et B

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

A quoi sert le FULL JOIN ?

A

Comme un UNION, mais pas besoin d’avoir le même schéma, on réuni tout simplement les 2 tables

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

A quoi sert le NATUAL JOIN ?

A

Faire une jointure sur les champs avec le même nom (pratique pour éviter le ON)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

A quoi sert TRUNCATE TABLE en SQL ?

A

Delete toutes les lignes + réinitialiser l’auto incrémente

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

A quoi sert un index en SQL ?

A

Accélerer les recherches sur ce champs

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Comment fonctionne les index en SQL ?

A

Les index trient les colonnes indexées, et donc on va pouvoir faire une recherche par dichotomie ensuite .

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Qu’est ce qu’une procédure stockée ?

A

C’est une fonction SQL, stockée dans le SGBD

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Qu’est ce qu’un trigger en SQL ?

A

C’est une procédure stockée mais appelable uniquement par un événement particulié, pas par un utilisateur

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Qu’est ce que le TPH ?

A

Table - per - Hierarchy, c’est essayer de récréer le système d’héritage avec un champ, qui va désigner le type de l’object (système Application dans control)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Quels sont les inconvénients du TPH ? (Database)

A

Il peut créer beaucoup de champs vides si on ne sépare pas correctement les données liées à chaque type d’object

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Que veut dire ACID ?

A

Atomicité, Cohérence, Isolation, Durabilité

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Que veut dire atomicité dans ACID ?

A

Empêche les transactions partiellement terminées. Tout changement effectué doit être accompli jusqu’au bout, sans interruption. Sinon, changement doit être annulé et la BD doit revenir comme avant

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Que veut dire cohérence dans ACID ?

A

Les données respectent les contraintes de la database

29
Q

Que veut dire isolation dans ACID ?

A

Une transaction n’empiète pas sur les autres. Une transaction se lance en même temps uniquement si elles ne peuvent pas s’impacter entre elles.

30
Q

Que veut dire durabilité dans ACID ?

A

Assure que tout changement à la BD est permanent, même en cas de panne.

31
Q

Est ce que les SGBD NoSQL est ACID ?

A

En général non, certains respectent quelques principes, mais pas tous.

32
Q

Qu’est ce que Metabase ?

A

Permet d’afficher et d’analyser les données à travers une interface accessible par tous les utilisateurs d’une entreprise. C’est vraiment très beau.

33
Q

Est ce que Metabase permet d’éditer des données ?

A

Non, c’est uniquement du read only.

34
Q

Comment assurer qu’un SGBD SQL nous renvoie toujours les mêmes résultats dans l’ordre ?

A

Il faut absolument préciser un ORDER BY sur un champ unique.

35
Q

Que se passe t’il si on a un ORDER BY sur un champ non unique ?

A

L’ordre peut être aléatoire…

36
Q

Quels sont les 3 principes importants dans une BDD distribuée selon CAP ?

A

Cohérence, disponiblité, tolérance aux partitions.

37
Q

Qu’est ce que le théorème CAP ?

A

Impossible de satisfaire les 3 principes (Cohérence, disponiblité, tolérance aux partitions), en même temps, au mieux 2.

38
Q

Qu’est ce qu’implique le théorème CAP ?

A

Il faut faire des compromis entre les 3 principes (Cohérence, disponibilité, tolérance aux partitions)

39
Q

Qu’est ce qu’un bloom filter ?

A

C’est une structure de données qui permet de savoir si la données est probablement présente ou non dans un ensemble

40
Q

Dans quoi est utilisé le bloom filter ? (Une techno particulière).

A

Dans MongoDB, en général dans le BDD NoSQL.

41
Q

Quel est le principe d’un bloom filter ?

A

On hash une entrée, on en retire des bits. Ces bits sont mis à 1 dans le bloom filter (une structure composée de plusieurs bits). Pour comparer, on hash une entrée, on regarde si les bits sont bien à 1 dans le bloom filter.

42
Q

Qu’est ce que le dénormalisation ?

A

C’est le fait de ne pas séparer les données en plusieurs tables. On insère tout dans le même document en MongoDB par exemple

43
Q

Pourquoi la normalisation n’est pas a faire automatiquement en MongoDB ?

A

Parce que MongoDB est très mauvais pour faire des jointures

44
Q

Quand faut il normaliser dans MongoDB ?

A

Quand les données changent régulièrement, que les sous documents sont grands, quand on veut une cohérence immédiate lors d’une modif, lorsqu’on veut une écriture rapide

45
Q

Quand faut il dénormaliser en MongoDB ?

A

Quand on veut une lecture rapide, quand les données changent peu, que les sous documents sont petits, qu’on ne veut pas forcément d’une cohérence immédiate,

46
Q

Comment gérer les relations one to many (N) en MongoDB ?

A

Un peu de N, on dénormalise. Beaucoup de N, on normalise (tableau d’id). Beaucoup de N : on fait une référence parent.

47
Q

Qu’est ce qu’une transaction en DB ?

A

Une suite d’une ou plusieurs requêtes qui forment un ensemble atomique

48
Q

Comment fonctionne une transaction en DB ?

A

Les requêtes vont êtres excutées de manière temporaire dans la session de l’utilisateur courant. Elles sont ensuite sauvegardées et partagées lors du commit.

49
Q

Qu’est ce que l’instruction rollback en DB ?

A

Effacer les modifications effectuées par une transaction.

50
Q

Qu’est ce que l’autocommit en DB ?

A

Les DB SQL vont automatiquement lancer et commit une requête si l’instruction BEGIN TRANSACTION est absente

51
Q

Quand utiliser une transaction en DB ?

A

Quand on veut rendre atomique une transaction ou qu’on veut améliorer les performances lors d’un bulk insert.

52
Q

Pourquoi une transaction qui regroupe plusieurs inserts augmente les perfs ?

A

Car l’action de commit est gourmande : elle va lock la DB et journaliser la transaction. Donc il vaut mieux reduire le nombre de commit.

53
Q

Comment fonctionne la pagination par offset ?

A

On ajoute une limit, qui représente le nombre d’objets par page, et un offset, qui représente notre page

54
Q

Quels sont les incovénients du offset ?

A

Devient très lent sur les dernières pages, problème de shifting

55
Q

Qu’est ce que le problème de shifting ?

A

Si une ligne est supprimée quand on change de page via une pagination en offset, il est possible qu’une ligne ne soit pas affichée entre temps, car elle se retrouvera dans la page 1 (déjà affichée) et non pas dans la page 2

56
Q

Pourquoi le offset est lent sur les dernières lignes ?

A

Car SQL lit de manière itérative les données, mais ne les envoie pas dans le réseau jusqu’au offset. Cependant, on aura bien parcouru quasiment toutes les lignes

57
Q

Comment fonctionne une pagination par curseur ?

A

On garde en référence les dernières valeurs des champs triés que l’on a reçu, puis on les renvoie au serveur. Le serveur va rependre ces valeurs pour appliquer un WHERE > valeurs

58
Q

Quel est l’avantage de la pagination par curseur ?

A

Les scrolls infinis sont beaucoup plus performants, pas de problème de shifting

59
Q

Quel sont les inconvénients de la pagination par curseur ?

A

Plus compliqué a mettre en place côté serveur, (et peut être côté client). Pas de système de page !

60
Q

Quel est l’ordre d’exécution d’une requête SQL ?

A

FROM, JOIN, WHERE, GROUP BY, HAVING, SELECT, ORDER BY, LIMIT

61
Q

Est-ce que l’ordre des WHERE est important en SQL ?

A

Non c’est le query planner qui va déterminer tout seul le meilleur ordre. C’est souvent en fonction des colonnes indexées.

62
Q

Quand utiliser des index composites ?

A

Quand on fait souvent une requête sur une combinaison de colonne

63
Q

Comment fonctionnent les index composites ?

A

Dans l’ordre des colonnes de l’index, on va venir trier des tables en b tree. Chaque table va référencer la prochaine table créé à partir de la colonne suivante

64
Q

Est-ce que les SGBD peuvent utiliser plusieurs indexs seuls dans une requête ?

A

Oui, c’est le index merge. Mais c’est plus long qu’un index composite

65
Q

Qu’est-ce qu’une colonne a forte sélectivité ?

A

C’est une colonne qui contient très peu de valeurs dupliquée. La clé primaire est une sélectivité parfaite.

66
Q

Comment déterminer les bons indexes composites à utiliser ?

A

Analyser les requêtes les plus fréquentes.

67
Q

Est-ce que l’ordre est important dans un index composite ?

A

Oui, il faut mettre les colonnes les plus sélectives en premières

68
Q

Qu’est ce que la redoncance d’indexes ?

A

C’est quand un index seul est déjà inclus dans un index composites

69
Q

Quels indexes sont redondants ?

A

Quand un index seul est déjà le préfix d’un index composite.