06.09.2014 Views

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

Bases de datos: Software libre - Universitat Oberta de Catalunya

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

© FUOC • 71Z799014MO 13 Caso <strong>de</strong> estudio<br />

3. El lenguaje SQL<br />

Una vez terminado el mo<strong>de</strong>lo relacional, <strong>de</strong>cidimos completar la documentación<br />

que veníamos realizando con las sentencias SQL correspondientes. Así,<br />

veremos en qué se concretará el mo<strong>de</strong>lo relacional.<br />

Como aún no sabemos en qué sistema gestor <strong>de</strong> base <strong>de</strong> <strong>datos</strong> vamos a implantar<br />

la solución, <strong>de</strong>cidimos simplemente anotar las sentencias según el estándar<br />

SQL92, y, posteriormente, ya examinaremos las particularida<strong>de</strong>s <strong>de</strong>l sistema<br />

gestor escogido para adaptarlas.<br />

3.1. Sentencias <strong>de</strong> <strong>de</strong>finición<br />

• Creación <strong>de</strong> la base <strong>de</strong> <strong>datos</strong><br />

CREATE SCHEMA GESTION_PETICIONES;<br />

• Definición <strong>de</strong> dominios<br />

Atención<br />

En algunos casos es conveniente<br />

la <strong>de</strong>finición <strong>de</strong> dominios para<br />

facilitar el trabajo posterior <strong>de</strong><br />

mantenimiento <strong>de</strong> la coherencia<br />

<strong>de</strong> la base <strong>de</strong> <strong>datos</strong>. No es aconsejable<br />

<strong>de</strong>finir dominios para<br />

cada dominio relacional, pero sí<br />

en los casos en que una columna<br />

pue<strong>de</strong> tomar una serie <strong>de</strong> valores<br />

<strong>de</strong>terminados.<br />

CREATE DOMAIN dom_estados AS CHAR (20)<br />

CONSTRAINT estados_validos<br />

CHECK (VALUE IN (‘Nueva’,’Se necesitan más <strong>datos</strong>’,’Aceptada’,’Confirmada’,<br />

’Resuelta’,<br />

‘Cerrada’))<br />

DEFAULT ‘Nueva’;<br />

• Creación <strong>de</strong> las tablas<br />

CREATE TABLE PETICION ( referencia INTEGER NOT NULL,<br />

cliente INTEGER NOT NULL,<br />

resumen CHARACTER VARYING (2048),<br />

estado dom_estados NOT NULL,<br />

fecharecepcion TIMESTAMP NOT NULL,<br />

fechainicio TIMESTAMP, fechafin TIMESTAMP,<br />

tiempoempleado TIME, PRIMARY KEY (referencia),<br />

FOREIGN KEY cliente REFERENCES CLIENTE(nif)<br />

ON DELETE CASCADE<br />

ON UPDATE CASCADE,<br />

CHECK (fecharecepcion < fechainicio),<br />

CHECK (fechainicio < fechafin) );<br />

Atención<br />

Aquí <strong>de</strong>beremos tener en<br />

cuenta las reglas <strong>de</strong> integridad,<br />

ya que habrá que explicitar<br />

la política escogida como<br />

restricción.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!