Computación Web (2023/24)

Material auxiliar: Bases de datos relacionales y SQL

Antes de empezar a trabajar con las transparencias de clase, conéctate a una base de datos vacía desde el terminal de SQL y carga los datos que se utilizan en los ejemplos de las mismas. De esta forma podrás probar los comandos que se muestran y posibles variaciones.

En primer lugar, conéctate a la base de datos ejecutando el siguiente comando en un terminal de línea de comandos:

mysql -h mysql -u 24_comweb_XX -D 24_comweb_XXa -p

Sustituye 24_comweb_XX por tu nombre de usuario y 24_comweb_XXa por uno de los nombres de bases de datos que te han sido asignados. Para que el cliente se pueda conectar, debes ejecutarlo en un ordenador de alguno de los laboratorios del Depto. de Ingeniería Telemática o desde el aula virtual.

A continuación, ejecuta los comandos que se reproducen a continuación. Una vez ejecutados, la base de datos contendrá las tablas y datos necesarios para ejecutar los ejemplos de las transparencias. Puedes ejecutar estos comandos tantas veces como desees para deshacer posibles cambios que hagas a los datos mientras practicas. Ten también en cuenta que en el terminal de MySQL debes terminar cada comando con un punto y coma que no se muestra en las transparencias.

DROP TABLE IF EXISTS Paises, Monumentos, Ciudades,
       Continentes, AreasGeograficas;

CREATE TABLE Continentes (
       id INT NOT NULL auto_increment,
       nombre VARCHAR(255) NOT NULL,
       superficie DOUBLE NOT NULL,
       poblacion LONG NOT NULL,
       PRIMARY KEY(id)
);

CREATE TABLE Ciudades (
       id INT NOT NULL auto_increment,
       nombre VARCHAR(255) NOT NULL,
       superficie DOUBLE NOT NULL,
       poblacion LONG NOT NULL,
       PRIMARY KEY(id)
);

CREATE TABLE Paises (
       id INT NOT NULL auto_increment,
       nombre VARCHAR(255) NOT NULL,
       continente INT NOT NULL,
       superficie DOUBLE NOT NULL,
       poblacion LONG NOT NULL,
       gobierno ENUM('república', 'monarquía'),
       capital INT NOT NULL,
       PRIMARY KEY(id),
       CONSTRAINT FOREIGN KEY (continente) REFERENCES Continentes(id),
       CONSTRAINT FOREIGN KEY (capital) REFERENCES Ciudades(id)
);

CREATE TABLE Monumentos (
       id INT NOT NULL auto_increment,
       nombre VARCHAR(255) NOT NULL,
       ciudad INT,
       PRIMARY KEY(id),
       CONSTRAINT FOREIGN KEY (ciudad) REFERENCES Ciudades(id)
);

CREATE TABLE AreasGeograficas (
       id INT NOT NULL auto_increment,
       nombre VARCHAR(255) NOT NULL,
       tipo ENUM('continente', 'pais', 'region', 'ciudad') NOT NULL,
       area DOUBLE NOT NULL,
       habitantes LONG NOT NULL,
       PRIMARY KEY(id)
);


INSERT INTO Continentes
VALUES
(1, 'Europa', 10180000.0, 731000000),
(2, 'América', 42330000.0, 910000000),
(3, 'Oceanía', 9008458.0, 38889988);

INSERT INTO Ciudades
VALUES
(1, 'Madrid', 605.77, 3141991),
(2, 'Barcelona', 102.15, 1604555),
(3, 'París', 105.40, 2229621),
(4, 'Ottawa', 2778.64, 1083391),
(5, 'Nueva York', 1214.00, 8491079),
(6, 'Berlín', 891.68, 3469849),
(7, 'Canberra', 814.2, 381488);

INSERT INTO Paises
VALUES
(1, 'España', 1, 505370, 46438422, 'monarquía', 1),
(2, 'Francia', 1, 643801, 64590000, 'república', 3),
(3, 'Canadá', 2, 9984670, 36155487, 'monarquía', 4),
(4, 'Alemania', 1, 357022, 81770900, 'república', 6),
(5, 'Australia', 3, 7692024, 23613193, 'monarquía', 7);

INSERT INTO Monumentos
VALUES
(1, 'Estatua de la Libertad', 5),
(2, 'Torre Eiffel', 3),
(3, 'Empire State Building', 5),
(4, 'Coliseo de Roma', NULL);

INSERT INTO AreasGeograficas
(nombre, tipo, area, habitantes)
VALUES
('Pekin', 'ciudad', 16410.54, 21700000),
('Roma', 'ciudad', 1285.0, 2865945),
('China', 'pais', 9596961.0, 1376049000),
('Italia', 'pais', 301340.0, 60665551);