Você está na página 1de 18

Ejercicios de

Fundamentos de
base de datos
Por:
Lpez Romero Andrs
8CV3

Contenido
1. Relacin Uno a Uno ........................................................................................................................4
1.1 Diagrama conceptual................................................................................................................4
1.2 Diagrama de objetos ................................................................................................................4
1.3 Frases .......................................................................................................................................4
1.4 Diseo de la base de datos .......................................................................................................4
1.5 Ejemplo de las tablas ................................................................................................................5
1.6 Instrucciones para crear la base de datos ................................................................................5
1.7 Instrucciones para armar la red ................................................................................................5
2. Relacin Uno a Muchos ..................................................................................................................7
2.1 Diagrama conceptual................................................................................................................7
2.2 Diagrama de objetos ................................................................................................................7
2.3 Frases .......................................................................................................................................8
2.4 Diseo de la base de datos .......................................................................................................8
2.5 Ejemplo de tablas .....................................................................................................................9
2.6 Instrucciones para crear las tablas ...........................................................................................9
2.7 Instrucciones para armar la red ................................................................................................9
3. Relacin Muchos a Muchos ..........................................................................................................11
3.1 Diagrama conceptual..............................................................................................................11
3.2 Diagrama de objetos ..............................................................................................................11

3.3 Frases .....................................................................................................................................11


3.4 Diseo de la base de datos .....................................................................................................12
3.5 Ejemplo de tablas ...................................................................................................................12
3.6 Instrucciones para crear las tablas .........................................................................................13
3.7 Instrucciones para amar la red ...............................................................................................13
4. Herencia .......................................................................................................................................15
4.1 Diagrama conceptual..............................................................................................................15
4.2 Diagrama de objetos ..............................................................................................................15
4.3 Frases .....................................................................................................................................15
4.4 Diseo de la base de datos .....................................................................................................16
4.5 Ejemplo de las tablas ..............................................................................................................16
4.6 Instrucciones para crear la base de datos ..............................................................................17
4.7 Instrucciones para armar la red ..............................................................................................17

1. Relacin Uno a Uno


1.1 Diagrama conceptual

Consultorio

LaboratoristaClinico
clave: String
nombre: String

Tiene

1..1
seAsignaA

0..1
tieneAsignado

clave: String
ubicacion: String

1.2 Diagrama de objetos


pedro: LaboratoristaClinico
clave = 01
nombre = Pedro

consultorioA1: Consultorio
seAsignaA

tieneAsignado

ana: LaboratoristaClinico
clave = 02
nombre = Ana

consultorioB1: Consultorio
seAsignaA

tieneAsignado

juan: LaboratoristaClinico
clave = 03
nombre = Juan

clave = cA1
ubicacion = Baracteriologia

clave = cB1
ubicacion = Hematologia
consultorioC1: Consultorio

seAsignaA

tieneAsignado clave = cC1


ubicacion = Patologia

1.3 Frases
Un laboratorista clnico tiene asignado un consultorio
Un consultorio se asigna a un laboratorista clnico

1.4 Diseo de la base de datos


Consultorio
LaboratoristaClinico
PK lab_ clave: CHAR(2)
1..1
lab_ nombre: VARCHAR(50)
+ <<PK>> lab_clave_pk( )

PK
0..1

FK

con_ clave: CHAR(4)


con_ubicacion: VARCHAR(50)
seAsignaA_lab_clave: CHAR(2)

+ <<PK>> con_clave_pk( )
+<<FK>> con_ seAsignaA_fk( )
4

1.5 Ejemplo de las tablas

LaboratoristaClinico

Consultorio

lab_clave
01
02
03

con_clave
cA01
cB01
cC01

lab_nombre
Pedro
Ana
Juan

con_ubicacion
Baracteriologia
Hematologia
Patologia

seAsignaA _lab_clave
01
02
03

1.6 Instrucciones para crear la base de datos


CREATE TABLE LaboratoristaClinico(
lab_clave CHAR(2) NOT NULL,
lab_nombre VARCHAR(50) NOT NULL,
CONSTRAINT lab_pk PRIMARY KEY(lab_clave)
);
CREATE TABLE Consultorio(
con_clave CHAR(4) NOT NULL,
con_ubicacion VARCHAR(50) NOT NULL,
seAsignaA_lab_clave CHAR(2) UNIQUE NOT NULL,
CONSTRAINT con_pk PRIMARY KEY(con_clave),
CONSTRAINT con_seAsignaA_fk FOREIGN KEY(seAsignaA_lab_clave)
REFERENCES LaboratoristaClinico (lab_clave)
);

1.7 Instrucciones para armar la red


INSERT INTO LaboratoristaClinico VALUES ('01', 'Pedro');
INSERT INTO LaboratoristaClinico VALUES ('02', 'Ana');
INSERT INTO LaboratoristaClinico VALUES ('03', 'Juan');
INSERT INTO Consultorio VALUES('cA01','Baracteriologia','01');
INSERT INTO Consultorio VALUES('cB01','Hematologia','02');
INSERT INTO Consultorio VALUES('cC01','Patologia','03');

/* UPDATE */
/* A Ana le quitamos el laboratorio y se lo asignamos a un nuevo laboratorista */
INSERT INTO LaboratoristaClinico VALUES ('04', 'Alberto');
UPDATE Consultorio SET seAsignaA_lab_clave='04' WHERE
seAsignaA_lab_clave='02';

/* DELETE */
/* Se borra a Ana */
DELETE FROM LaboratoristaClinico WHERE lab_clave = '02';

/* SELECT */
SELECT lab_clave, lab_nombre, con_clave, con_ubicacion FROM
LaboratoristaClinico, Consultorio WHERE LaboratoristaClinico.lab_clave =
Consultorio.seAsignaA_lab_clave;

2. Relacin Uno a Muchos


2.1 Diagrama conceptual
LaboratorioDeComputo
clave: String
nombre: String

Computadora

Pertenece
1..1
perteneceA

0..*
constaDe

clave: String
marca: String
procesador: String

2.2 Diagrama de objetos


ipn-com01:Computadora

salaOriente:LaboratorioDeComputo
clave = ldc-ori
nombre = Sala Oriente

clave = ipn-com01
marca = DELL
procesador = Core i5
ipn-com02:Computadora
clave = ipn-com02
marca = Acer
procesador = Core i7
ipn-com03:Computadora
clave = ipn-com03
marca = HP
procesador = Itanium

ipn-com04:Computadora

clave = ipn-com04
marca = Lenovo
procesador = Core 2 Duo
salaPoniente:LaboratorioDeComputo
clave = ldc-pon
nombre = Sala Poniente

ipn-com05:Computadora
clave = ipn-com05
marca = Toshiba
procesador = Core i3
ipn-com06:Computadora
clave = ipn-com06
marca = Lanix
procesador = Core 2 Quad

2.3 Frases
Una computadora pertenece a un laboratorio de cmputo
Un laboratorio cmputo consta de varias computadoras

2.4 Diseo de la base de datos

LaboratorioDeComputo
PK ldc_clave: CHAR(7)
ldc_nombre: VARCHAR(50)
+<<PK>> ldc_pk( )

Computadora
1..1

0..* PK com_clave: CHAR(9)


com_marca: VARCHAR(50)
com_procesador: VARCHAR(50)
FK perteneceA_ldc_clave: CHAR(7)
+<<PK>> com_pk( )
+<<FK>> com_perteneceA_fk( )

2.5 Ejemplo de tablas


Computadora
com_clave

com_marca

com_procesador

perteneceA_ldc_clave

LaboratorioDeComputo

ipn-com01
ipn-com02
ipn-com03
ipn-com04
ipn-com05
ipn-com06

DELL
Acer
HP
Lenovo
Toshiba
Lanix

Core i5
Core i7
Itanuim
Core 2 Duo
Core i3
Core 2 Quad

ldc-ori
ldc-ori
ldc-ori
ldc-pon
ldc-pon
ldc-pon

ldc_clave

ldc_nombre

ldc-ori

Sala Oriente

ldc-pon

Sala Poniente

2.6 Instrucciones para crear las tablas


CREATE TABLE LaboratorioDeComputo(
ldc_clave CHAR(7) NOT NULL,
ldc_nombre VARCHAR(50) NOT NULL,
CONSTRAINT ldc_pk PRIMARY KEY(ldc_clave)
);
CREATE TABLE Computadora(
com_clave CHAR(9) NOT NULL,
com_marca VARCHAR(50) NOT NULL,
com_procesador VARCHAR(50) NOT NULL,
pertenceA_ldc_clave CHAR(7) NOT NULL,
CONSTRAINT com_pk PRIMARY KEY(com_clave),
CONSTRAINT com_pertenceA_fk FOREIGN KEY(pertenceA_ldc_clave)
REFERENCES LaboratorioDeComputo(ldc_clave)
);

2.7 Instrucciones para armar la red


INSERT INTO LaboratorioDeComputo VALUES ('ldc-ori', 'Sala Oriente');
INSERT INTO LaboratorioDeComputo VALUES ('ldc-pon', 'Sala Poniente');

INSERT INTO Computadora VALUES ('ipn-com01', 'DELL', 'Core i5', 'ldc-ori');


INSERT INTO Computadora VALUES ('ipn-com02', 'Acer', 'Core i7', 'ldc-ori');
INSERT INTO Computadora VALUES ('ipn-com03', 'HP', 'Itanium', 'ldc-ori');
INSERT INTO Computadora VALUES ('ipn-com04', 'Lenovo', 'Core 2 Duo', 'ldc-pon');
INSERT INTO Computadora VALUES ('ipn-com05', 'Toshiba', 'Core i7', 'ldc-pon');
INSERT INTO Computadora VALUES ('ipn-com06', 'Lanix', 'Core 2 Quad', 'ldc-pon');

/* UPDATE */
/* Pasamos la computadora ipn-com04 a la Sala Oriente */
UPDATE Computadora SET pertenceA_ldc_clave = 'ldc-ori' WHERE
com_clave='ipn-com04';

/* DELETE */
/* Eliminamos la computadora ipn-com03 por presentar demasiadas fallas */
DELETE FROM Computadora where com_clave = 'ipn-com03';

/* SELECT */
SELECT com_clave, com_marca, com_procesador, ldc_clave, ldc_nombre FROM
LaboratorioDeComputo, Computadora WHERE LaboratorioDeComputo.ldc_clave =
Computadora.pertenceA_ldc_clave;

10

3. Relacin Muchos a Muchos


3.1 Diagrama conceptual

Libro
isbn: String
titulo: String

Autor
0..*
escribe

Escribe

0..*
escritoPor

registro: String
nombre: String

3.2 Diagrama de objetos

luis: Autor
jsf: Libro
registro = 01
nombre = Luis

jose: Autor
registro = 02
nombre = Jose

isbn = 9700000001
titulo: = Java Server Faces
csharp: Libro
isbn = 9700000002
titulo: = Microsoft C#

francisco: Autor
registro = 03
nombre = Francisco

3.3 Frases
Un autor escribe varios libros
Un libro es escrito por varios autores

11

3.4 Diseo de la base de datos

Libro

Autor

PK lib_isbn: CHAR(10)
lib_titulo: VARCHAR(50)

PK aut_registro: VARCHAR(2)
aut_nombre: VARCHAR(50)

+<<PK>> lib_pk()

+<<PK>> aut_pk()
0..*

0..*

LibroAutor
FK
FK

lib_isbn: CHAR(10)
aut_registro: VARCHAR(2)

+<<FK>> libaut_lib_fk( )
+<<FK>>libaut_aut_fk( )

3.5 Ejemplo de tablas

Libro
lib_isbn
lib_titulo
9700000001 Java Server Faces
9700000002 Microsoft C#

LibroAutor
lib_isbn
9700000001
9700000001
9700000002
9700000001

Autor
aut_registro
01
03
02
03

aut_registro
01
02
03

aut_nombre
Luis
Jose
Francisco

12

3.6 Instrucciones para crear las tablas


CREATE TABLE Libro(
lib_isbn CHAR(10) NOT NULL,
lib_titulo VARCHAR(50) NOT NULL,
CONSTRAINT lib_pk PRIMARY KEY(lib_isbn)
);
CREATE TABLE Autor(
aut_registro CHAR(2) NOT NULL,
aut_nombre VARCHAR(50) NOT NULL,
CONSTRAINT aut_pk PRIMARY KEY(aut_registro)
);
CREATE TABLE LibroAutor(
lib_isbn CHAR(10) NOT NULL,
aut_registro CHAR(2) NOT NULL,
CONSTRAINT libaut_lib_fk FOREIGN KEY(lib_isbn) REFERENCES
Libro(lib_isbn),
CONSTRAINT libaut_aut_fk FOREIGN KEY(aut_registro) REFERENCES
Autor(aut_registro)
);

3.7 Instrucciones para amar la red


INSERT INTO Libro VALUES ('9700000001', 'Java Server Faces');
INSERT INTO Libro VALUES ('9700000002', 'Microsoft C#');

INSERT INTO Autor VALUES ('01', 'Luis');


INSERT INTO Autor VALUES ('02', 'Jose');
INSERT INTO Autor VALUES ('03', 'Francisco');

INSERT INTO LibroAutor VALUES ('9700000001','01');


INSERT INTO LibroAutor VALUES ('9700000001','03');
INSERT INTO LibroAutor VALUES ('9700000002','02');
INSERT INTO LibroAutor VALUES ('9700000002','03');

13

/* UPDATE */
/* Se actualiza la version del jsf */
UPDATE Libro SET lib_titulo='Java Server Faces 2.2' WHERE
lib_isbn='9700000001';

/* DELETE */
/* Francisco se retira del libro Microsoft C# */
DELETE FROM LibroAutor WHERE lib_isbn='9700000002' AND aut_registro='03';

/* SELECT */
SELECT Libro.lib_titulo, Autor.aut_nombre FROM Libro, Autor, LibroAutor
WHERE Libro.lib_isbn=LibroAutor.lib_isbn AND
Autor.aut_registro=LibroAutor.aut_registro ORDER BY Libro.lib_titulo;

14

4. Herencia
4.1 Diagrama conceptual

Luchador
registro: int
nombre: String

Boxeador

Karateca

asaltos: int
categoriaPeso: String

colorCinta: String

4.2 Diagrama de objetos


yahir: Luchador

david: Karateca

luis:Boxeador

registro = 100
nombre = Yahir

registro = 101
nombre = David
colorCinta = blanca

registro = 102
nombre = Luis
asaltos = 10
categoriaPeso = pluma

4.3 Frases
Todo luchador puede ser un Boxeador o Karateca
Todo Karateca es un Luchador
Todo Boxeador es un Luchador

15

4.4 Diseo de la base de datos

Luchador

PK luc_registro: INTEGER
luc_nombre: VARCHAR(50)
+<<PK>> luc_pk( )

Karateca

Boxeador

luc_registro: INTEGER
krt_color_cinta: VARCHAR(8)

luc_registro: INTEGER
box_asaltos: INTEGER
box_categoria_peso: VARCHAR(12)

+ <<PK>> krt_pk( )
+<<FK>> krt_luc_pk( )

+<<PK>>box_pk( )
+<<FK>>box_luc_fk( )

4.5 Ejemplo de las tablas


Luchador
luc_registro
100
101
102

luc_nombre
Yahir
David
Luis

Boxeador

Karateca
luc_registro
101

krt_color_cinta
blanca

luc_registro
102

box_asaltos
10

box_categoria_peso
pluma

16

4.6 Instrucciones para crear la base de datos


CREATE TABLE Luchador(
luc_registro INTEGER NOT NULL,
luc_nombre VARCHAR(50) NOT NULL,
CONSTRAINT luc_pk PRIMARY KEY(luc_registro)
);
CREATE TABLE Karateca(
luc_registro INTEGER NOT NULL,
krt_color_cinta VARCHAR(8) NOT NULL,
CONSTRAINT krt_pk PRIMARY KEY (luc_registro),
CONSTRAINT krt_luc_fk FOREIGN KEY (luc_registro) REFERENCES
Luchador(luc_registro)
);
CREATE TABLE Boxeador(
luc_registro INTEGER NOT NULL,
box_asaltos INTEGER NOT NULL,
box_categoria_peso VARCHAR(12) NOT NULL,
CONSTRAINT box_pk PRIMARY KEY (luc_registro),
CONSTRAINT box_luc_fk FOREIGN KEY (luc_registro) REFERENCES
Luchador(luc_registro)
);

4.7 Instrucciones para armar la red


/* Se crean y se conectan los nodos */
INSERT INTO Luchador VALUES (100, 'Yahir');
INSERT INTO Luchador VALUES (101, 'David');
INSERT INTO Karateca VALUES (101, 'blanca');

INSERT INTO Luchador VALUES (102, 'Luis');


INSERT INTO Boxeador VALUES (102, 10, 'pluma');

17

/* Consulta de la tabla

Luchadores */

SELECT * FROM Luchador;

/* Consulta de la tabla Karateca */


SELECT Luchador.luc_registro, Luchador.luc_nombre,
Karateca.krt_color_cinta FROM Luchador, Karateca WHERE
Luchador.luc_registro = Karateca.luc_registro;

/* Consulta de la tabla Boxeador */


SELECT Luchador.luc_registro, luc_nombre, box_asaltos, box_categoria_peso
FROM Luchador, Boxeador WHERE Luchador.luc_registro =
Boxeador.luc_registro;

/* UPDATE */
/* David entrena mucho y se convierte en cinta negra */
UPDATE Karateca SET krt_color_cinta='negra' WHERE luc_registro=101;

/* Yahir se retira de ser luchador */


DELETE FROM Luchador WHERE luc_registro=100;

18

Você também pode gostar