viernes, 31 de julio de 2026

Capítulo 2. ¿Qué es Angular?

Introducción a Angular

Angular es una plataforma de desarrollo que permite crear aplicaciones web modernas, dinámicas y escalables. Además del desarrollo de aplicaciones web, Angular puede utilizarse para crear aplicaciones móviles y de escritorio mediante la integración con otras tecnologías.

Cuando se afirma que Angular es una plataforma, significa que va más allá de ser únicamente un framework para escribir código. Angular proporciona un conjunto completo de herramientas que facilitan el desarrollo, la organización, las pruebas y la implementación de aplicaciones. Esta característica lo convierte en una solución integral para el desarrollo frontend.

Principales características de Angular

Angular ofrece múltiples funcionalidades listas para usar, lo que permite a los desarrolladores enfocarse en la lógica de negocio sin tener que configurar cada herramienta desde cero.

Entre sus principales características destacan:

  • Arquitectura basada en componentes, que facilita la organización y reutilización del código.

  • Sistema de enrutamiento (Routing) para la navegación entre páginas o vistas de la aplicación.

  • Cliente HTTP integrado para consumir APIs y servicios web.

  • Inyección de dependencias, una práctica fundamental de la ingeniería de software que Angular implementa de forma sencilla y eficiente.

  • Herramientas para pruebas automatizadas, que ayudan a garantizar la calidad del código.

  • Compilación y optimización integradas, permitiendo generar aplicaciones rápidas y eficientes.

Gracias a estas capacidades, Angular proporciona una experiencia de desarrollo estructurada y consistente.

Angular frente a otras alternativas

Una de las diferencias más importantes entre Angular y otras soluciones populares, como React, es su alcance.

Angular es considerado una plataforma completa, ya que incluye todas las herramientas esenciales para el desarrollo de aplicaciones frontend modernas. Por otro lado, React es principalmente una biblioteca de interfaces de usuario, por lo que habitualmente requiere complementarse con herramientas externas para cubrir funcionalidades como el enrutamiento, la gestión de estado o ciertas tareas de configuración.

Esto no implica que una tecnología sea mejor que la otra; simplemente representan enfoques diferentes para el desarrollo de aplicaciones.

Comunidad y popularidad

Angular cuenta con una comunidad de desarrolladores amplia y activa a nivel mundial. Su adopción por parte de organizaciones y equipos de desarrollo de distintos tamaños ha generado una gran cantidad de recursos de aprendizaje, documentación, tutoriales y foros de soporte.

La popularidad de Angular permite que existan:

  • Miles de proyectos desarrollados con esta tecnología.

  • Una gran cantidad de preguntas y respuestas en plataformas técnicas.

  • Bibliotecas y herramientas mantenidas por la comunidad.

  • Oportunidades laborales para desarrolladores especializados en Angular.

Aprender Angular representa una inversión sólida debido a su amplia adopción y constante evolución.

Flexibilidad en las herramientas de desarrollo

Angular ofrece libertad para trabajar con diferentes herramientas y entornos de desarrollo.

Por ejemplo, es posible utilizar:

  • Visual Studio Code.

  • Visual Studio.

  • Sublime Text.

  • Vim.

  • Otros editores de texto compatibles.

Esta flexibilidad es posible gracias a que la herramienta central del ecosistema Angular es Angular CLI (Command Line Interface).

Angular CLI

Angular CLI es la herramienta oficial para la gestión de proyectos Angular. A través de una terminal, permite ejecutar tareas comunes durante el ciclo de vida de una aplicación.

Algunas de sus funciones principales son:

  • Crear nuevos proyectos.

  • Generar componentes, servicios y otros elementos de la aplicación.

  • Compilar el proyecto.

  • Ejecutar pruebas automatizadas.

  • Publicar versiones para producción.

Angular CLI es multiplataforma y puede utilizarse en:

  • Windows

  • Linux

  • macOS

Esto permite una experiencia de desarrollo consistente independientemente del sistema operativo utilizado.

¿Cuándo utilizar Angular?

Angular es una excelente opción en escenarios como los siguientes:

Equipos que inician un nuevo proyecto frontend

Angular resulta especialmente útil cuando los miembros del equipo no poseen una amplia experiencia en el ecosistema JavaScript. Debido a que proporciona convenciones y herramientas predefinidas, ayuda a mantener una estructura uniforme dentro del proyecto.

Desarrollo de aplicaciones empresariales

Gracias a su arquitectura organizada y a las prácticas recomendadas que promueve, Angular es una alternativa ideal para aplicaciones de gran tamaño y proyectos con múltiples desarrolladores.

Proyectos que requieren escalabilidad

Angular ofrece mecanismos que facilitan el mantenimiento y crecimiento de la aplicación a lo largo del tiempo, permitiendo gestionar proyectos complejos de manera eficiente.

Angular como Opinionated Framework

Angular es considerado un Opinionated Framework, lo que significa que promueve una forma específica de organizar y desarrollar aplicaciones.

En lugar de dejar todas las decisiones al desarrollador, Angular propone:

  • Una estructura de proyecto estándar.

  • Herramientas recomendadas.

  • Patrones de diseño predefinidos.

  • Buenas prácticas ampliamente aceptadas por la comunidad.

Esto contribuye a que los proyectos sean más consistentes y fáciles de mantener, especialmente cuando participan varios desarrolladores.

Es importante destacar que Angular no obliga a utilizar todas sus recomendaciones, pero sí incentiva el uso de aquellas que han demostrado ser efectivas en proyectos reales.

Rendimiento

Angular permite desarrollar aplicaciones grandes y complejas con un alto nivel de rendimiento.

Mediante técnicas de optimización, compilación avanzada y carga eficiente de recursos, es posible construir aplicaciones rápidas y ligeras, siempre que se apliquen correctamente las buenas prácticas de desarrollo.

Evolución de Angular

Angular no siempre tuvo el nombre que conocemos actualmente. Su historia comenzó con AngularJS, una tecnología que marcó una etapa importante en la evolución del desarrollo web frontend.

Aunque Angular y AngularJS comparten parte de su origen, se trata de tecnologías diferentes con arquitecturas y enfoques distintos.

Resumen

Angular es una plataforma completa para el desarrollo de aplicaciones frontend que proporciona herramientas integradas para la construcción, organización, prueba y despliegue de aplicaciones modernas. Gracias a su arquitectura basada en componentes, su potente CLI y su enfoque estructurado, Angular se ha convertido en una de las tecnologías más utilizadas para el desarrollo de aplicaciones empresariales y de gran escala.

En el próximo capítulo analizaremos las diferencias entre Angular y AngularJS, así como la evolución que llevó al framework a su arquitectura actual.


🐘 La Restricción PRIMARY KEY en PostgreSQL

Hasta ahora hemos estudiado varias restricciones importantes:

  • NOT NULL

  • DEFAULT

  • UNIQUE

Todas ellas ayudan a mejorar la calidad de los datos, pero aún queda una pregunta fundamental:

¿Cómo identificamos de manera única cada registro dentro de una tabla?

Para resolver este problema PostgreSQL utiliza la restricción PRIMARY KEY.


🧠 ¿Qué es una PRIMARY KEY?

Una Primary Key (Clave Primaria) es una columna, o conjunto de columnas, que identifica de forma única cada fila de una tabla.

En otras palabras:

✅ Cada valor debe ser único.

✅ No puede ser NULL.

✅ Permite identificar exactamente un registro.

Por ejemplo, en una tabla de empleados:

id

nombre

1

Juan Pérez

2

Ana López

3

Carlos García

La columna id puede utilizarse como clave primaria porque cada valor es único y permite localizar un registro específico.


🎯 ¿Por qué es importante?

Las claves primarias son fundamentales porque:

  • Identifican registros de forma única.

  • Evitan duplicados.

  • Facilitan las búsquedas.

  • Sirven como base para las relaciones entre tablas.

  • Ayudan a mantener la integridad de los datos.

Prácticamente toda tabla debería tener una clave primaria.


🔍 PRIMARY KEY = UNIQUE + NOT NULL

Conceptualmente, una clave primaria combina dos reglas:

PRIMARY KEY

=

UNIQUE

+

NOT NULL


Por lo tanto:

✅ Los valores no pueden repetirse.

✅ Los valores no pueden ser nulos.


🏗️ Definir una PRIMARY KEY sobre una columna

La forma más sencilla es definirla junto con la columna.

CREATE TABLE empleados (

    id INTEGER PRIMARY KEY,

    nombre VARCHAR(100),

    departamento VARCHAR(100)

);


En este caso:

  • id es la clave primaria.

  • Cada empleado debe tener un ID único.


✅ Insertar registros válidos

INSERT INTO empleados (

    id,

    nombre,

    departamento

)

VALUES

(

    1,

    'Juan Pérez',

    'Tecnología'

),

(

    2,

    'Ana López',

    'Finanzas'

);


Consultar:

SELECT *

FROM empleados;


Resultado:

id | nombre      | departamento

----+-------------+-------------

 1  | Juan Pérez  | Tecnología

 2  | Ana López   | Finanzas



❌ Intentar insertar una PRIMARY KEY duplicada

Ahora intentemos insertar un registro con un ID ya existente.

INSERT INTO empleados (

    id,

    nombre,

    departamento

)

VALUES (

    1,

    'Carlos García',

    'Ventas'

);


PostgreSQL devolverá un error similar a:

ERROR: duplicate key value violates unique constraint


Esto ocurre porque ya existe un registro con:

id = 1



❌ Intentar insertar NULL

Tampoco se permiten valores nulos.

INSERT INTO empleados (

    id,

    nombre

)

VALUES (

    NULL,

    'Roberto Martínez'

);


Resultado:

ERROR: null value in column "id"

violates not-null constraint



🏗️ PRIMARY KEY a Nivel de Tabla

También es posible declarar la clave primaria al final de la definición de la tabla.

Sin nombre explícito

CREATE TABLE empleados (

    id INTEGER,

    nombre VARCHAR(100),

    departamento VARCHAR(100),


    PRIMARY KEY (id)

);



Con nombre explícito (recomendado)

Al igual que vimos con UNIQUE, podemos asignar un nombre a la restricción.

CREATE TABLE empleados (

    id INTEGER,

    nombre VARCHAR(100),

    departamento VARCHAR(100),


    CONSTRAINT pk_empleados

        PRIMARY KEY (id)

);


Beneficios:

  • Mayor claridad.

  • Administración más sencilla.

  • Mensajes de error más entendibles.

  • Facilita futuras modificaciones.


📋 Convención de nombres recomendada

Es común utilizar el prefijo:

pk_


seguido del nombre de la tabla.

Ejemplos:

pk_usuarios

pk_productos

pk_clientes

pk_empleados

pk_facturas



🧪 Ejemplo Completo

Crear tabla

CREATE TABLE productos (

    codigo INTEGER,


    nombre VARCHAR(100),


    precio NUMERIC(10,2),


    CONSTRAINT pk_productos

        PRIMARY KEY (codigo)

);



Insertar datos válidos

INSERT INTO productos (

    codigo,

    nombre,

    precio

)

VALUES

(

    1001,

    'Laptop',

    18000.00

),

(

    1002,

    'Monitor',

    4500.00

);


Consultar:

SELECT *

FROM productos;


Resultado:

codigo | nombre   | precio

--------+----------+----------

 1001   | Laptop   | 18000.00

 1002   | Monitor  | 4500.00



Intentar insertar un código duplicado

INSERT INTO productos (

    codigo,

    nombre,

    precio

)

VALUES (

    1001,

    'Teclado',

    750.00

);


Resultado:

ERROR: duplicate key value violates unique constraint "pk_productos"



🔑 Claves Primarias Compuestas

Una Primary Key también puede estar formada por varias columnas.

Esto se conoce como clave primaria compuesta.


Ejemplo

Supongamos una tabla de inscripciones.

CREATE TABLE inscripciones (

    alumno_id INTEGER,

    curso_id INTEGER,

    fecha_inscripcion DATE,


    CONSTRAINT pk_inscripciones

        PRIMARY KEY (

            alumno_id,

            curso_id

        )

);


En este caso:

  • Un alumno puede estar en muchos cursos.

  • Un curso puede tener muchos alumnos.

  • La combinación alumno-curso debe ser única.


Registros válidos

INSERT INTO inscripciones

VALUES

(

    1,

    10,

    '2026-07-01'

),

(

    1,

    20,

    '2026-07-02'

);



Registro inválido

INSERT INTO inscripciones

VALUES

(

    1,

    10,

    '2026-07-03'

);


Resultado:

ERROR: duplicate key value violates unique constraint


Porque la combinación:

(1,10)


ya existe.


🔧 Agregar una PRIMARY KEY a una tabla existente

Si la tabla ya fue creada:

ALTER TABLE empleados

ADD CONSTRAINT pk_empleados

PRIMARY KEY (id);



🔧 Eliminar una PRIMARY KEY

ALTER TABLE empleados

DROP CONSTRAINT pk_empleados;



⚠️ ¿Cuántas PRIMARY KEY puede tener una tabla?

Una tabla puede tener:

✅ Una única Primary Key.

❌ No puede tener dos Primary Keys.

Por ejemplo:

CREATE TABLE ejemplo (

    id INTEGER PRIMARY KEY,

    codigo INTEGER PRIMARY KEY

);


Esto generará un error.

Si necesitas controlar la unicidad de otras columnas, utiliza UNIQUE.


💡 Buenas prácticas

Toda tabla debería tener una Primary Key

✅ Recomendado

CREATE TABLE clientes (

    id INTEGER PRIMARY KEY,

    nombre VARCHAR(100)

);



Utiliza nombres descriptivos

cliente_id

producto_id

empleado_id

factura_id


suelen ser más claros que:

id1

id2

codigo



Asigna nombres a las restricciones

CONSTRAINT pk_clientes

PRIMARY KEY (cliente_id)


Esto simplifica el mantenimiento del esquema.


Mantén la Primary Key estable

Evita utilizar columnas cuyos valores puedan cambiar con frecuencia.

Por ejemplo:

email

telefono

username


cliente_id

empleado_id

producto_id



✅ Conclusión

La restricción PRIMARY KEY es uno de los conceptos más importantes de PostgreSQL y de las bases de datos relacionales en general.

Los puntos clave son:

  • Identifica de forma única cada registro.

  • No permite valores duplicados.

  • No permite valores nulos.

  • Cada tabla puede tener una sola Primary Key.

  • Puede estar formada por una o varias columnas.

  • Es recomendable asignar nombres explícitos a la restricción utilizando la palabra clave CONSTRAINT.

  • Constituye la base para crear relaciones entre tablas.

Capítulo 2. ¿Qué es Angular?