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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

© FUOC • 71Z799014MO 41 <strong>Bases</strong> <strong>de</strong> <strong>datos</strong> en PostgreSQL<br />

create table Persona (<br />

nss int,<br />

nombre varchar(30),<br />

pareja varchar(30),<br />

jefe int,<br />

correo varchar(20),<br />

primary key (nss),<br />

unique (pareja),<br />

foreign key (jefe) references Persona,<br />

check (correo ~ ‘@’ )<br />

);<br />

Esta notación permite que la restricción pueda abarcar varias columnas.<br />

create table Curso (<br />

materia varchar(30),<br />

grupo char(4),<br />

dia int,<br />

hora time,<br />

aula int,<br />

primary key (materia, grupo),<br />

unique (dia, hora, aula)<br />

);<br />

Un curso se i<strong>de</strong>ntifica por el grupo y la materia, y dos cursos no pue<strong>de</strong>n estar<br />

en la misma aula el mismo día y a la misma hora.<br />

Al igual que la restricción <strong>de</strong> columna, a las restricciones <strong>de</strong> tabla pue<strong>de</strong> asignárseles<br />

un nombre:<br />

create table Persona (<br />

nss int,<br />

nombre varchar(30),<br />

pareja varchar(30),<br />

jefe int,<br />

correo varchar(20),<br />

constraint i<strong>de</strong>ntificador primary key (nss),<br />

constraint monogamia unique (pareja),<br />

constraint un_jefe foreign key (jefe) references Persona,<br />

check (correo ~ ‘@’ )<br />

);<br />

La sentencia alter table permite añadir (add) o quitar (drop) restricciones<br />

ya <strong>de</strong>finidas:<br />

alter table Persona drop constraint monogamia<br />

alter table add constraint monogamia unique (pareja);

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

Saved successfully!

Ooh no, something went wrong!