0% encontró este documento útil (0 votos)
361 vistas10 páginas

Actividad de Aprendizaje Unidad 3 ..De Bases de Datos Ii

Este documento describe una actividad de aprendizaje sobre bases de datos. Incluye instrucciones para crear tablas y restricciones en PostgreSQL y para insertar datos de prueba. También contiene preguntas para consultar la base de datos, como obtener información sobre artículos sobre bases de datos presentados en 2012 o sobre los presentadores que no han presentado ningún artículo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
361 vistas10 páginas

Actividad de Aprendizaje Unidad 3 ..De Bases de Datos Ii

Este documento describe una actividad de aprendizaje sobre bases de datos. Incluye instrucciones para crear tablas y restricciones en PostgreSQL y para insertar datos de prueba. También contiene preguntas para consultar la base de datos, como obtener información sobre artículos sobre bases de datos presentados en 2012 o sobre los presentadores que no han presentado ningún artículo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 10

Actividad APRENDIZAJE

UNIDAD 3
Base de datos II
INGENIERIA DE SOFTWARE V
Actividad No 2.
Fecha: 03 mayo
Nombre y apellidos: Juan David Ortega Marrugo

La actividad consta de varias preguntas, la primera de ellas propone convertir algunas


consultas en SQL, mientras que otras consisten en la puesta en práctica de ciertos
conocimientos adquiridos.

Ejercicio 1
a. Según las relaciones detalladas en la parte posterior se detallan a continuación,
indicar las instrucciones SQL (para PostgreSQL) para la creación de las tablas y
proponed los tipos de cada atributo según sus posibles valores. Añadid restricciones
adicionales, si lo cres conveniente.

b. Indicad el orden en que se han tenido que crear las tablas, según las relaciones que
existen entre ellas.

Aquí mismo se incluye el punto a y b. Indicando que para el punto b el orden de


creación es el mismo que se sigue en la presentación de los Create´s.

Speaker (speaker_code, speaker_name, email, birth_date)


{birth_date} tiene formato YYYY-MM-DD (por ejemplo: '1985-02-28').
Restricciones mínimas obligatorias a considerar:
- speaker_name no puede ser nul.
- email debe tener un formato mínimo.
- birth_date no puede ser superior a la fecha del sistema.

Create table Speaker

speaker_code int not null primary key,

speaker_name varchar(50) not null,

email varchar(50),

birth_date date
constraint ck_email

check(email like '%@%')

constraint ck_birth_date

check(birth_date < current_date)

);

Paper (paper_code, paper_name, topic)


Restricciones mínimas obligatorias a considerar:
- paper_name debe contener más de 10 caracteres.
- topic no puede ser nul, contiene datos tipo carácter y debe tener tamaño de 40.

Create table Paper

paper_code int not null primary key,

paper_name varchar(50),

topic varchar(40) not null

constraint ck_paper_name

check(length(paper_name)>10)

);

City (city_code, city_name, country)


Restricciones mínimas obligatorias a considerar:
- city_code es tipo carácter fijo y debe tener un tamaño de 10 carácteres.
- city_name no puede ser nul.

Create table City

city_code char(10) not null primary key,

city_name varchar(30) not null,


country varchar(30)

);

Speech (speech_year, location, city_code, web)


{city_code} es clave foránea de City

Create table Speech

speech_year char(4) not null primary key,

location varchar(20),

city_code char(10) not null,

web varchar(30),

constraint fk_Speech_City Foreign Key(city_code) references City (city_code)

);

Introduce (speaker_code, paper_code, speech_year, opening_date_hour, duration)


{speaker_code} es clave foránea de Speaker
{paper_code} es clave foránea de Paper
{speech_year} es clave foránea de Speech
Restricciones mínimas obligatorias a considerar:
- speech_year debe estar en el rango 2000-2015
- duration es un campo tipo numérico y contendrá únicamente valores entre 1 y 120
- opening_date_hour no será superior a la fecha del sistema

Create table Introduce

speaker_code int not null,

paper_code int not null,

speech_year char(4) not null,

opening_date_hour date,

duration numeric,

constraint ck_speech_year check(speech_year >= '2000' and speech_year <= '2015'),

constraint ck_duration check(duration >= 1 and duration <= 120),


constraint ck_opening_date_hour check(opening_date_hour < current_date),

constraint fk_Introduce_Speaker foreign key(speaker_code) references Speaker


(speaker_code),

constraint fk_Introduce_Paper foreign key(paper_code) references Paper


(paper_code),

constraint fk_Introduce_Speech foreign key(speech_year) references Speech


(speech_year)

);

Reference (paper_code1, paper_code2)


{paper_code1} es clave foránea de Paper
{paper_code2} es clave foránea de Paper
Restricciones mínimas obligatorias a considerar:
- Un Paper no se puede referenciar a si mismo.

Create table Reference

paper_code1 int not null,

paper_code2 int not null,

constraint fk_Reference_Paper_paper_code1 Foreign Key(paper_code1) references


Paper (paper_code),

constraint fk_Reference_Paper_paper_code2 Foreign Key(paper_code2) references


Paper (paper_code),

constraint ck_paper_code_distinct Check(paper_code1 <> paper_code2)

);

c. Ejecutad las inserciones de datos que se adjuntan seguidamente, corrigiendo


los posibles errores que pudieran haber. En caso de existir errores en los datos
que relacionan distintas tablas, considerad como válido el primero. Los posibles
datos incorrectos que no tengan relevancia para las consultas se pueden
corregir libremente.

Se insertan datos específicos para demostrar que cada consulta retorna un resultado
correcto.
INSERT INTO Speaker

VALUES

(1, 'Jaume Armengol', '[email protected]', '08/01/1969'),

(2, 'Ramon Fornelles', '[email protected]', '15/03/1976'),

(3, 'Ingrid Prados', '[email protected]', '20/08/1981'),

(4, 'Josep Maria Frenades', '[email protected]', '06/05/1979'),

(5, 'Manel Jimenez', '[email protected]', '16/09/1976'),

(6, 'Maria Jesus Alabart', '[email protected]', '16/07/1980');

INSERT INTO Paper

VALUES

(1, 'NoSQL Databases', 'DataBases'),

(2, 'New lithium battery', 'Technology'),

(3, 'Grid Computing and DataBases', 'DataBases'),

(4, 'Approximation to MongoDB', 'DataBases'),

(5, 'Solar Cell Tech', 'Technology'),

(6, 'The new fuel; H2O2', 'Technology'),

(7, 'Open Source SGBD', 'DataBases');

INSERT INTO City VALUES (1, 'Barcelona', 'Spain');

INSERT INTO City VALUES (2, 'Hospitalet del Llobregat', 'Spain');

INSERT INTO City VALUES (3, 'Bogota', 'Colombia');

INSERT INTO City VALUES (4, 'Madrid', 'Spain');

INSERT INTO City VALUES (5, 'London', 'United Kingdom');

INSERT INTO Speech VALUES (2012, 'Palau de la Música', 1, 'www.openDB.com');

INSERT INTO Speech VALUES (2011, 'Fira Bcn', 1, 'www.solarcell.com');

INSERT INTO Speech VALUES (2010, 'Drum L''Os', 3, 'www.hidroxidfuel.com');

INSERT INTO Introduce VALUES (1, 1, 2010, '05/02/2010 05:30', 60);

INSERT INTO Introduce VALUES (5, 7, 2010, '05/02/2010 07:00', 60);

--INSERT INTO Introduce VALUES (4, 2, 2011, '30/02/2011 10:15', 45);

INSERT INTO Introduce VALUES (3, 3, 2012, '18/02/2012 12:30', 90);

INSERT INTO Introduce VALUES (2, 4, 2012, '18/02/2012 09:30', 120);


INSERT INTO Reference VALUES (3,1), (4,1), (7, 1), (6,5), (6,2);

d1) Obtened el código y el nombre de los artículos con tema 'DataBases' presentados en la

conferencia del año 2012, que posteriormente nunca han sido referenciados.

Select i.paper_code, p.paper_code, p.topic, i.speech_year, p.paper_name

from introduce i

left join paper p on i.paper_code = p.paper_code

where p.topic = 'DataBases' and i.speech_year = '2012'

d2) Obtened el nombre y el tema de los artículos de menor duración.

Select i.paper_code, p.paper_name, p.topic, i.duration

from introduce i

left join paper p on i.paper_code = p.paper_code

where i.duration in (select min(duration) from introduce)

order by i.duration asc


d3) Obtened el nombre y email de las personas que han presentado algún artículo el año
2011 y el año 212 sobre el tema 'DataBases'.

Select s.speaker_name, s.email

from introduce i

left join speaker s on i.speaker_code = s.speaker_code

left join paper p on i.paper_code = p.paper_code

where i.speech_year between '2011' and '2012'

and p.topic = 'DataBases'


d4) Obtened el nombre de los artículos presentados antes del año 2010 y que han sido
referenciados como artículos del tema 'DataBases'

Esta consulta no devuelve nada, ya que no hay artículos presentados antes del año 2010.

Select p.paper_name, p.topic, p.paper_code, i.speech_year

from introduce i

left join paper p on i.paper_code = p.paper_code

left join reference r on i.paper_code = r.paper_code2

where i.speech_year < '2010'

and i.paper_code = r.paper_code2

and p.topic = 'DataBases'

d5) Obtened el nombre de todos los presentadores que consta que no han presentado ningún
artículo.

Select s.speaker_name

from introduce i

right join speaker s on i.speaker_code = s.speaker_code

where i.speaker_code is null

También podría gustarte