Sei sulla pagina 1di 7

Universidad Autnoma de Madrid

Departamento de Ingeniera Informtica

Sistemas de Informacin I
Partiendo del modelo entidad-relacin obtenido como resultado de la prctica I se
realizar la transformar al modelo relacional y se implementar en la base de datos
postgreSQL (www.postgresql.org). A continuacin se describe la prctica y en el
apndice A podis encontrar consejos sobre como utilizar postgreSQL en los
laboratorios.
Al transformar el modelo Entidad-Relacin al modelo relacional no os olvidis de
justificar (al menos) los siguientes puntos:
-

Tipo de dato adecuado para cada columna.

Restricciones de integridad y valores NULL (o valores por defecto) en las columnas.

Restricciones referenciales adecuadas entre filas de dos tablas

Claves extranjeras

Si se elimina una entidad, qu debe hacer la base de datos con las entidades
relacionadas con ella.

En caso de que se almacene informacin redundante justificar por qu se hace

Una vez implementada la base de datos en postgreSQL, poblarla con datos, empleando
de manera ordenada sentencias SQL (INSERT o COPY). Las pginas web mencionadas
en la prctica 1 pueden ser una buena fuente de informacin.
El resultado de esta prctica estar compuesto por:
1. Diagrama Entidad Relacin obtenido en la prctica anterior. (Inclyase las
restricciones de cardinalidad tal y como se muestran en el ejemplo del Apndice B
apartado a).
2. En caso de que se desee modificar el diseo de la base: nuevo diagrama E-R y
justificacin de los cambios.
3. Esquema del modelo relacional incluyendo los razonamientos para obtenerlo (y
en particular los puntos resaltados arriba). (Sgase la notacin del ejemplo del
Apndice B apartado b).
4. Diagrama relacional. (Sgase el modelo descrito en el Apndice B apartado c)
5. Conjunto de sentencias SQL para la creacin de las tablas (incluidas las
restricciones).
6. Script necesario para crear y poblar las tablas en postgreSQL.
7. Volcado de la base de datos (pg_dump).
Qu hay que entregar? Se deber entregar una memoria por escrito conteniendo los
primeros 5 apartados y se entregar electrnicamente tanto la memoria como el
resultado de los apartados 6 y 7 (vedse
http://www.ii.uam.es/~jiperez/si1practicas/enunciado.html seccin Entrega de prcticas
va web) .
El resultado del apartado 6 ser un fichero con el nombre tablas.sql que deber generar
las tablas si se ejecutan los comandos

Sistemas de Informacin I

Prctica 2 - 1

Universidad Autnoma de Madrid

Departamento de Ingeniera Informtica

createdbnombredemibasededatos
cattablas.sql|psqlnombredemibasededatos
(vase apndice A para una introduccin al uso de postgreSQL).
Por favor, generar cuidadosamente los ficheros solicitados en los apartados 6 y 7, y
aseguraos que funcionan en la versin de postgreSQL instalada en los laboratorios,
es absolutamente imprescindible para aprobar la prctica que estos ficheros se
comporten correctamente.

Sistemas de Informacin I

Prctica 2 - 2

Universidad Autnoma de Madrid

Departamento de Ingeniera Informtica

Apendice A: Usando postgreSQL en los


laboratorios
Antes de nada, recuerdo que es responsabilidad de los alumnos hacer un buen uso de los
equipos as como la tarea de proteger su trabajo.
postgreSQL est instalado en la particin Linux, cada PC tiene instalado su propio
servidor.
La instalacin actual del laboratorio slo permite acceso a dicho servidor con el usuario
alumnodb, cuya contrasea es fsedb.
Creacin de una base de datos
Para realizar las prcticas, cada grupo deber crear una base de datos con el comando
createdb -T template0 dbname

Recordad que los ordenadores son pblicos y por lo tanto hacer backups de la base de
datos (vase ms adelante) al terminar cada sesin
Clientes para editar una base de datos
Una vez creada la base de datos se procede a la creacin de tablas utilizando uno de los
dos clientes habituales en postgreSQL, dichos clientes son:

psql: Cliente basado en lnea de comandos, desde donde se pueden insertar las sentencias SQL
que generan tablas, realizan consultas, etc.

pgaccess: Cliente con interfaz grfica desde donde se pueden realizar tareas similares.

En las prcticas que realicemos, se puede utilizar tanto uno como otro indistintamente.
Almacenamiento de la informacin y posterior recuperacin.
Para poder guardar el trabajo realizado en los laboratorios vamos a hacer uso de una de
las utilidades que suministra postgreSQL para la realizacin de back ups. pg_dump
vuelca el contenido de una base de datos (con toda la informacin de control que aade
postgreSQL a la misma) en un fichero de texto.
La sintaxis de este comando es:
pg_dump

dbname > outputfile

Para recargar uno de los dumps generados por pg_dump podemos utilizar el siguiente
comando:
cat inputfile | psql dbname

En el fondo, lo que esto significa es que sobre la consola de psql se ejecuten todas las
sentencias que aparecen en el fichero inputfile, que debera corresponder con el
outputfile generado con pg_dump, y esto implica que la base de datos dbname tiene que
haber sido creada previamente. Para ello y para evitar errores en la recarga del dump,
debemos borrar nuestra base de datos dropdb dname y volver a crearla:
createdb -T template0 dbname

Ejecucin de scripts
Sistemas de Informacin I

Prctica 2 - 3

Universidad Autnoma de Madrid

Departamento de Ingeniera Informtica

Cualquier fichero conteniendo un conjunto de rdenes SQL puede ser suministrado


como entrada al cliente de la base de datos psqlutilizando el comando
catmyscript_file.sql|psqldbname
Alternativamente se puede invocar desde dentro de psql ejecutando en el prompt de
psql
>>\imyscript_file.sql
Para cualquier consulta acerca de las opciones de los comandos mencionados se puede
hacer uso de las pginas man dedicadas a los mismos o de la documentacin existente en
www.postgreSQL.org.
Poblar la base de datos usando la instruccin copy
Supongamos que tenemos la tabla productos
CREATE TABLE productos (
productID INT,
name VARCHAR(80),
price NUMERIC(10,2),
retailPrice NUMERIC(10,2)
);

Un fichero con el contenido listado a continuacin cargar cuatro tuplas en la relacin


(tabla) productos:
COPY productos FROM stdin USING DELIMITERS '|';
1419|American Greetings CreataCard Gold V4.0|21.49|25.24
1424|Barbie(R) Nail Designer(TM)|20.74|25.99
1427|Panzer Commander|21.99|30.24
1431|Riven: The Sequel to Myst|31.99|40.24
\.

En la primera linea USING DELIMITERS '|' es opcional y significa que los valores
estarn separados por el carcter '|'. El separador por defecto es el tabulador. El nmero
de campos en cada lnea debe ser igual al nmero de atributos. Los datos deben acabarse
con '\.' En una lnea independiente
Nota: COPY (a diferencia de INSERT) es un comando propio de postgreSQL

Sistemas de Informacin I

Prctica 2 - 4

Universidad Autnoma de Madrid

Departamento de Ingeniera Informtica

Apndice B
Apartado a: Diagrama E-R con restricciones de cardinalidad.

Sistemas de Informacin I

Prctica 2 - 5

Universidad Autnoma de Madrid

Departamento de Ingeniera Informtica

Apartado b: Esquema del modelo relacional.


student(studentId, name, birthdate, program, feesOwed)

studentMajor(studentId , major)
course(courseId, title, credits, hours)

, section, term, limit)


register(studentId , courseId , section ,
offering(courseId
grade)
teach(courseId

section

)
officeRoomId ,
profId

prof(profId, name, phone,


division(divisionId, name)
room(roomId, purpose, capacity)
instruction(type, description)
location(courseId

Sistemas de Informacin I

section

approval,

type

divisionId

roomId

time)

Prctica 2 - 6

Universidad Autnoma de Madrid

Departamento de Ingeniera Informtica

Apartado c: Diagrama del modelo relacional.

Sistemas de Informacin I

Prctica 2 - 7

Potrebbero piacerti anche