MONOREPO DATABASE Flashcards

1
Q

Comment définiriez-vous un schéma conceptuel et un schéma physique des données?

A

Le schéma conceptuel représente les entités, leurs attributs et leurs relations de façon abstraite et indépendante du SGBD. Le schéma physique traduit ce modèle en une structure adaptée à un SGBD spécifique, définissant les tables, colonnes, types de données, clés et contraintes d’intégrité.

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

Comment assurez-vous la sécurité des données dans une base de données?

A

La sécurité est assurée par: l’utilisation de requêtes paramétrées pour éviter les injections SQL, la gestion des droits d’accès par utilisateur, la validation des entrées côté serveur, le chiffrement des données sensibles, et des sauvegardes régulières pour garantir la disponibilité des données en cas d’incident.

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

Comment mettriez-vous en place une base de données pour un nouveau projet web?

A

Je commencerais par analyser les besoins pour créer un modèle conceptuel, puis le traduirais en schéma physique. Je configurerais ensuite l’environnement avec les variables de connexion dans un fichier .env sécurisé, créerais le script SQL de création des tables et contraintes, et mettrais en place un système de migration pour faciliter les évolutions futures.

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

Qu’est-ce qu’un pattern Repository et pourquoi l’utiliser?

A

Le pattern Repository est une couche d’abstraction qui isole la logique d’accès aux données du reste de l’application. Il permet de centraliser les opérations CRUD, facilite les tests unitaires, rend le code plus maintenable, et permet de changer facilement la source de données sans impacter le reste de l’application.

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

Comment prévenez-vous les injections SQL dans votre code?

A

J’utilise systématiquement des requêtes paramétrées où les valeurs sont transmises séparément de la requête SQL. Par exemple: databaseClient.query(“SELECT * FROM users WHERE id = ?”, [userId]). Je ne concatène jamais directement des variables dans les chaînes SQL et je valide toujours les entrées utilisateur.

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

Expliquez la différence entre DBAL et ORM, et quand utiliser l’un plutôt que l’autre.

A

Un DBAL fournit une interface unifiée pour se connecter à différents SGBD et abstraire les spécificités de leur syntaxe SQL. Un ORM va plus loin en mappant les objets du langage aux tables de la base de données. J’utiliserais un DBAL pour des requêtes simples ou des performances optimales, et un ORM pour des applications complexes où la productivité et la facilité de maintenance sont prioritaires.

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

Comment gérez-vous les informations de connexion à la base de données de manière sécurisée?

A

J’utilise des variables d’environnement stockées dans un fichier .env qui n’est pas versionné dans le dépôt Git. Ce fichier contient les identifiants de connexion (hôte, port, nom d’utilisateur, mot de passe, nom de la base). Pour le déploiement, j’utilise des variables d’environnement configurées sur le serveur ou la plateforme d’hébergement.

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

Expliquez l’intérêt d’utiliser une architecture modulaire avec des repositories pour l’accès aux données.

A

Cette architecture permet de séparer les responsabilités: les repositories s’occupent uniquement de l’accès aux données, tandis que la logique métier reste dans les services. Cela facilite la maintenance, améliore la testabilité, et permet de changer la source de données sans impacter le reste de l’application. C’est aussi plus facile à comprendre pour une équipe de développement.

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

Comment synchronisez-vous le schéma de base de données entre les environnements de développement et de production?

A

J’utilise un système de migrations qui garde une trace des changements successifs du schéma. Chaque migration est un script versionné qui peut être appliqué ou annulé. Avec des commandes comme npm run db:migrate, je peux mettre à jour n’importe quel environnement à la version souhaitée, assurant ainsi la cohérence entre développement, test et production.

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

Comment documenteriez-vous le schéma de base de données pour faciliter la maintenance future?

A

Je maintiendrais une documentation à jour incluant: un diagramme du modèle de données (MCD/MPD), la description de chaque table et ses relations, un dictionnaire des données expliquant chaque champ, les contraintes d’intégrité, et les procédures de sauvegarde/restauration. J’utiliserais des outils de documentation automatique ou des commentaires dans les scripts SQL pour faciliter la maintenance.

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