Objectius del Mòdul

En aquest mòdul, aprendràs els conceptes bàsics sobre les bases de dades, la seva importància en el desenvolupament d'aplicacions i com interactuar amb elles des de Node.js. Al final d'aquest mòdul, hauràs adquirit els coneixements necessaris per començar a treballar amb bases de dades relacionals i no relacionals.

Què és una Base de Dades?

Una base de dades és una col·lecció organitzada d'informació o dades estructurades, generalment emmagatzemades i accessibles electrònicament des d'un sistema informàtic. Les bases de dades permeten emmagatzemar, gestionar i recuperar dades de manera eficient.

Tipus de Bases de Dades

Hi ha diversos tipus de bases de dades, però les més comunes són:

  1. Bases de Dades Relacionals (RDBMS):

    • Emmagatzemen dades en taules amb files i columnes.
    • Utilitzen SQL (Structured Query Language) per gestionar i manipular dades.
    • Exemples: MySQL, PostgreSQL, SQLite.
  2. Bases de Dades NoSQL:

    • Dissenyades per emmagatzemar dades no estructurades o semi-estructurades.
    • No utilitzen SQL com a llenguatge principal.
    • Exemples: MongoDB, Cassandra, Redis.

Comparació entre RDBMS i NoSQL

Característica RDBMS NoSQL
Estructura de Dades Taules (files i columnes) Documents, Clau-Valor, Grafs
Llenguatge de Consulta SQL NoSQL (varia segons la base)
Escalabilitat Vertical Horitzontal
Esquemes Esquemes rígids Esquemes flexibles
Consistència Alta consistència Eventualment consistent

Per què Utilitzar una Base de Dades?

Les bases de dades són essencials per a la majoria d'aplicacions perquè permeten:

  • Emmagatzematge Persistent: Les dades es mantenen fins i tot després de tancar l'aplicació.
  • Gestió Eficient de Dades: Permeten operacions ràpides de lectura, escriptura, actualització i eliminació.
  • Integritat de Dades: Asseguren que les dades siguin consistents i correctes.
  • Accés Concurrent: Permeten que múltiples usuaris accedeixin i modifiquin les dades simultàniament.

Interactuar amb Bases de Dades des de Node.js

Node.js ofereix diverses biblioteques i mòduls per interactuar amb diferents tipus de bases de dades. A continuació, es mostren alguns dels més utilitzats:

Bases de Dades Relacionals

  • MySQL: mysql o mysql2 són paquets populars per connectar-se a bases de dades MySQL.
  • PostgreSQL: pg és el paquet més utilitzat per interactuar amb PostgreSQL.

Bases de Dades NoSQL

  • MongoDB: mongoose és una biblioteca d'objecte-document mapper (ODM) per treballar amb MongoDB.
  • Redis: redis és un client per connectar-se a bases de dades Redis.

Exemple Pràctic: Connexió a una Base de Dades MySQL

Instal·lació del Paquet MySQL

Primer, instal·la el paquet mysql2 utilitzant npm:

npm install mysql2

Connexió a la Base de Dades

A continuació, crea un fitxer database.js i afegeix el següent codi per connectar-te a una base de dades MySQL:

const mysql = require('mysql2');

// Configuració de la connexió
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'testdb'
});

// Connectar-se a la base de dades
connection.connect((err) => {
  if (err) {
    console.error('Error connectant-se a la base de dades:', err.stack);
    return;
  }
  console.log('Connectat a la base de dades com a id ' + connection.threadId);
});

// Tancar la connexió
connection.end();

Explicació del Codi

  • Importació del Mòdul: const mysql = require('mysql2'); importa el mòdul mysql2.
  • Configuració de la Connexió: Es defineixen els paràmetres de connexió com l'host, l'usuari, la contrasenya i la base de dades.
  • Connexió a la Base de Dades: connection.connect() estableix la connexió i gestiona possibles errors.
  • Tancar la Connexió: connection.end(); tanca la connexió a la base de dades.

Exercici Pràctic

Objectiu

Connectar-se a una base de dades MySQL, crear una taula, inserir dades i realitzar una consulta.

Passos

  1. Instal·la el paquet mysql2 si no ho has fet ja:

    npm install mysql2
    
  2. Crea un fitxer exercise.js i afegeix el següent codi:

    const mysql = require('mysql2');
    
    // Configuració de la connexió
    const connection = mysql.createConnection({
      host: 'localhost',
      user: 'root',
      password: 'password',
      database: 'testdb'
    });
    
    // Connectar-se a la base de dades
    connection.connect((err) => {
      if (err) {
        console.error('Error connectant-se a la base de dades:', err.stack);
        return;
      }
      console.log('Connectat a la base de dades com a id ' + connection.threadId);
    
      // Crear una taula
      const createTableQuery = `
        CREATE TABLE IF NOT EXISTS users (
          id INT AUTO_INCREMENT PRIMARY KEY,
          name VARCHAR(255) NOT NULL,
          email VARCHAR(255) NOT NULL
        )
      `;
      connection.query(createTableQuery, (err, results) => {
        if (err) {
          console.error('Error creant la taula:', err.stack);
          return;
        }
        console.log('Taula creada amb èxit');
    
        // Inserir dades
        const insertQuery = `
          INSERT INTO users (name, email)
          VALUES ('John Doe', '[email protected]'), ('Jane Smith', '[email protected]')
        `;
        connection.query(insertQuery, (err, results) => {
          if (err) {
            console.error('Error inserint dades:', err.stack);
            return;
          }
          console.log('Dades inserides amb èxit');
    
          // Realitzar una consulta
          const selectQuery = 'SELECT * FROM users';
          connection.query(selectQuery, (err, results) => {
            if (err) {
              console.error('Error realitzant la consulta:', err.stack);
              return;
            }
            console.log('Resultats de la consulta:', results);
    
            // Tancar la connexió
            connection.end();
          });
        });
      });
    });
    

Solució

El codi anterior realitza els següents passos:

  1. Es connecta a la base de dades testdb.
  2. Crea una taula users si no existeix.
  3. Insereix dues files a la taula users.
  4. Realitza una consulta per obtenir totes les files de la taula users.
  5. Tanca la connexió a la base de dades.

Conclusió

En aquesta secció, has après els conceptes bàsics sobre les bases de dades, els diferents tipus de bases de dades i com interactuar amb elles des de Node.js. Has vist un exemple pràctic de com connectar-se a una base de dades MySQL, crear una taula, inserir dades i realitzar una consulta. Aquestes habilitats són fonamentals per desenvolupar aplicacions que necessiten emmagatzemar i gestionar dades de manera eficient. En els següents temes, aprofundirem en l'ús de bases de dades específiques com MongoDB i SQL amb Sequelize.

Curs de Node.js

Mòdul 1: Introducció a Node.js

Mòdul 2: Conceptes Bàsics

Mòdul 3: Sistema de Fitxers i I/O

Mòdul 4: HTTP i Servidors Web

Mòdul 5: NPM i Gestió de Paquets

Mòdul 6: Framework Express.js

Mòdul 7: Bases de Dades i ORMs

Mòdul 8: Autenticació i Autorització

Mòdul 9: Proves i Depuració

Mòdul 10: Temes Avançats

Mòdul 11: Desplegament i DevOps

Mòdul 12: Projectes del Món Real

© Copyright 2024. Tots els drets reservats