Sesión 1 · Repaso de modelado y SQL
1 / 23 Portal del curso

Bases de Datos Espaciales · Sesión 1

Repaso: modelado de datos y SQL

Antes de guardar geometrías hay que dominar lo básico: cómo se organizan los datos en tablas, cómo se relacionan y cómo se consultan.

Universidad Militar Nueva Granada

Hoy, en 3 horas

Plan de la sesión

HoraTemaDónde
0:00 – 0:15El curso y el caso de estudioEstas slides
0:15 – 0:45Tablas, tipos de dato, llaves, NULLSlides + pestaña Conceptos
0:45 – 1:15Modelo entidad-relación y normalizaciónSlides + pestaña Modelo
1:15 – 1:30Descanso
1:30 – 2:15SQL guiadoConsola SQL del HTML
2:15 – 2:50Ejercicios con verificaciónPestaña Ejercicios
2:50 – 3:00Autoevaluación y cierrePestaña Autoevaluación

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

El curso

Ocho sesiones, de las tablas al análisis espacial

Sesión 1

Repaso de modelado y SQL

Sesión 2

Arquitectura de una aplicación SIG

Sesiones 3 y 4

Crear y manipular datos espaciales

Sesiones 5 y 6

Análisis espacial

Sesión 7

Relaciones espaciales

Sesión 8

Evaluación

Tres entornos, siempre lado a lado

PostgreSQL + PostGIS · Oracle Spatial · Geodatabase de ArcGIS

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

El caso de estudio

San Isidro de la Sabana, un municipio inventado

El mismo municipio se usa en todas las sesiones, en los HTML y en los scripts.

  • 6 barrios, con estrato y población
  • 8 colegios y 3 centros de salud
  • 5 vías, un río y una quebrada
  • 3 parques y 2 zonas de riesgo

Hoy se trabaja solo con sus datos descriptivos. Desde la sesión 3 cada objeto tendrá además su forma y su ubicación.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Parte 1

Cómo se organizan los datos

Tablas, tipos de dato, llaves y el modelo que las conecta.

Conceptos

Base de datos y sistema gestor

Base de datos

Conjunto organizado de datos relacionados entre sí.

Toda la información del municipio, repartida en varias tablas que se conectan.

SGBD

Sistema Gestor de Bases de Datos: el programa que guarda, protege y consulta.

PostgreSQL, Oracle, SQL Server, MySQL.

Lo que da un SGBD

  • Muchos usuarios a la vez
  • Reglas que evitan datos malos
  • Permisos por usuario
  • Respaldo y recuperación
  • Un lenguaje común: SQL

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Conceptos

Una tabla, por partes

Tabla colegios

idnombresectorfundadoid_barrio
1IE Técnico Centraloficial19621
2Colegio Santa Lucíaoficial19784
9Colegio Nuevo Horizonteprivado2024NULL

Fila (registro)

Un colegio concreto con todos sus datos. La fila resaltada es Santa Lucía.

Columna (atributo)

Una característica con un tipo fijo: nombre es texto, fundado es entero.

Tabla (entidad)

Un tipo de cosa del mundo: colegios, barrios, estudiantes.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Conceptos

Cada columna tiene un tipo de dato

TipoPara quéPostgreSQLOracle
EnteroConteos, códigos, añosinteger, bigintNUMBER(10)
DecimalÁreas, dinero, medidasnumeric(10,2)NUMBER(10,2)
TextoNombres, descripcionesvarchar(60), textVARCHAR2(60)
FechaFechas y horasdate, timestampDATE, TIMESTAMP
LógicoSí o nobooleanNUMBER(1) o CHAR(1)
GeometríaForma y ubicacióngeometry (PostGIS)SDO_GEOMETRY

La última fila es la razón de este curso: una base de datos espacial es una base normal con un tipo de dato más.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Conceptos

Llave primaria y llave foránea

barrios

id (PK)nombre
1Centro
4Santa Lucía
5Los Pinos

colegios

id (PK)nombreid_barrio (FK)
1IE Técnico Central1
2Colegio Santa Lucía4
3Gimnasio Los Pinos5

Llave primaria (PK)

Identifica cada fila. No se repite y no puede estar vacía.

Llave foránea (FK)

Apunta a la PK de otra tabla. La base no deja poner un barrio que no existe.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Conceptos

NULL no es cero ni texto vacío

NULL significa ausencia de valor: no se sabe, o no aplica.

El Colegio Nuevo Horizonte todavía no tiene barrio asignado: su id_barrio es NULL.

Cualquier comparación con NULL da "desconocido", nunca verdadero. Por eso se pregunta con IS NULL.

Correcto

SELECT nombre FROM colegios
WHERE id_barrio IS NULL;

No devuelve nada

SELECT nombre FROM colegios
WHERE id_barrio = NULL;

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Modelo entidad-relación

El modelo del municipio

BARRIOS

id PK
nombre
estrato
poblacion
area_ha

COLEGIOS

id PK
nombre
sector
fundado
id_barrio FK

DOCENTES

id PK
nombre
area
anios_experiencia
id_colegio FK

ESTUDIANTES

id PK
nombre, apellido
grado
id_colegio FK
id_barrio_residencia FK

1

N

está en

1

N

trabaja en

1 · estudia en · N

1

N

vive en

Cada relación 1 a N se guarda como una llave foránea en el lado N.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Modelo entidad-relación

¿Uno o muchos? Las tres cardinalidades

1 : 1

Un conductor maneja una sola ruta, y cada ruta tiene un solo conductor.

FK en cualquiera de las dos tablas, marcada como única.

1 : N

Un barrio tiene muchos colegios; un colegio está en un barrio.

FK en el lado N: colegios.id_barrio. Es la más común.

N : M

Una ruta pasa por muchos paraderos; un paradero está en muchas rutas.

Tabla intermedia: rutas_paraderos(id_ruta, id_paradero).

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Modelo entidad-relación

Del enunciado al modelo, en cuatro pasos

1

Sustantivos

se vuelven entidades: colegio, barrio, docente, estudiante.

2

Características

se vuelven atributos: nombre, sector, año de fundación.

3

Verbos

se vuelven relaciones: está en, trabaja en. ¿Uno o muchos?

4

Tablas

Entidad = tabla con PK. 1:N = FK. N:M = tabla intermedia.

"Cada colegio está en un barrio y tiene docentes y estudiantes; cada estudiante vive en un barrio."

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Normalización

Cada dato se guarda una sola vez

Antes: una planilla

colegiobarrioestr.docente
IE Técnico CentralCentro3Martha Rojas
IE Técnico CentralCentro3Jorge Peña
Jardín RayitosCentro3Diana Vargas
Jardín RayitosCentro3Liliana Herrera

El estrato de Centro aparece cuatro veces. Si cambia, hay que corregir cuatro filas.

Después: tres tablas

barrios(id, nombre, estrato)

colegios(id, nombre, id_barrio)

docentes(id, nombre, id_colegio)

El estrato está en una sola celda. La planilla completa se recupera con un JOIN.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

A practicar · 10 minutos

Abran repaso-bases-de-datos.html

  • Pestaña Conceptos: toquen cada parte de la tabla colegios.
  • Pestaña Modelo entidad-relación: toquen cada relación y lean el JOIN.
  • Pestaña Normalización: comparen las dos vistas.

Parte 2

SQL: hablarle a la base de datos

Consultar, filtrar, agrupar, unir tablas y modificar datos.

SQL

La anatomía de una consulta

SELECT nombre, poblacion
FROM barrios
WHERE estrato <= 3
ORDER BY poblacion DESC
LIMIT 3;

SELECT qué columnas mostrar

FROM de qué tabla

WHERE qué filas dejar

ORDER BY en qué orden

LIMIT cuántas filas

Resultado

Santa Lucía · 6900

La Estación · 5100

Centro · 4200

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

SQL

Filtrar filas con WHERE

OperadorEjemploSe lee
= <>sector = 'oficial'igual, distinto
< > <= >=fundado < 2000menor, mayor
AND OR NOTestrato <= 3 AND poblacion > 4000combinar condiciones
INestrato IN (2, 3)está en la lista
BETWEENgrado BETWEEN 9 AND 11en el rango, incluidos
LIKEapellido LIKE '%ez'termina en "ez"
IS NULLid_barrio IS NULLno tiene valor

El texto va entre comillas simples. En LIKE, el signo % reemplaza cualquier cantidad de letras.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

SQL

Resumir con agregados y GROUP BY

SELECT sector, COUNT(*) AS total
FROM colegios
GROUP BY sector;

sectortotal
oficial5
privado4

Agregados

COUNT SUM AVG MIN MAX

WHERE o HAVING

WHERE filtra filas antes de agrupar. HAVING filtra grupos después: HAVING COUNT(*) >= 2.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

SQL

Unir tablas: JOIN y LEFT JOIN

SELECT c.nombre, b.nombre
FROM colegios c
JOIN barrios b
  ON b.id = c.id_barrio;

8 filas. Solo los colegios que tienen pareja. Nuevo Horizonte desaparece.

SELECT c.nombre, b.nombre
FROM colegios c
LEFT JOIN barrios b
  ON b.id = c.id_barrio;

9 filas. Conserva todos los colegios; el que no tiene barrio sale con NULL.

Las letras c y b son alias: nombres cortos para no repetir el nombre de la tabla. La condición del ON dice qué columna conecta con cuál.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

SQL

Crear, insertar, actualizar y borrar

CREATE TABLE

CREATE TABLE rutas (
  id INTEGER PRIMARY KEY,
  nombre VARCHAR(40) NOT NULL,
  id_colegio INTEGER REFERENCES colegios(id));

INSERT

INSERT INTO barrios
  (id, nombre, estrato, poblacion, area_ha)
VALUES (7, 'Villa del Sol', 3, 1500, 35);

UPDATE

UPDATE colegios SET id_barrio = 7
WHERE nombre = 'Colegio Nuevo Horizonte';

DELETE

DELETE FROM docentes
WHERE id_colegio IS NULL;

Un UPDATE o un DELETE sin WHERE afecta a todas las filas de la tabla.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Ejercicios · pestaña Ejercicios del HTML

Escriban la consulta y pulsen Verificar

1. Barrios y estrato

2. Barrios populares más poblados

3. Colegios privados antiguos

4. Estudiantes por grado

5. Experiencia por área

6. Cada colegio con su barrio

7. Docentes sin colegio

8. Estudiantes por colegio, con vacíos

9. Colegios con muchos estudiantes

10. Estudiantes que viajan a otro barrio

11. Barrios más densos que el promedio

12. Modificar datos

En grupos

Tres ejercicios de modelado: rutas escolares, normalizar una planilla y por qué usar llaves foráneas.

Para llevarse

Tres ideas de hoy

Tablas y llaves

Cada tabla tiene su PK; las relaciones se guardan con FK.

Un dato, un lugar

Normalizar evita contradicciones; el JOIN vuelve a juntar.

SQL declarativo

SELECT, WHERE, GROUP BY y JOIN sirven igual para datos espaciales.

Próxima sesión: la arquitectura de una aplicación SIG y el lugar que ocupa la base de datos espacial.

Bases de Datos Espaciales · UMNG · Sesión 1

Universidad Militar Nueva Granada

Flechas del teclado o deslizar el dedo para avanzar.