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 38 <strong>Bases</strong> <strong>de</strong> <strong>datos</strong> en PostgreSQL<br />

la ausencia <strong>de</strong> valor. Al <strong>de</strong>finir una tabla po<strong>de</strong>mos indicar qué columnas<br />

podrán contener valores nulos y cuáles no.<br />

create table Persona (<br />

nombre varchar(40) not null,<br />

trabajo varchar(40) null,<br />

correo varchar(20),<br />

);<br />

El nombre <strong>de</strong> una persona no pue<strong>de</strong> ser nulo, y es posible que la persona no tenga trabajo.<br />

También es posible que no tenga correo, al no especificar una restricción not null, se asume<br />

que la columna pue<strong>de</strong> contener valores nulos.<br />

• unique. Esta restricción se utiliza cuando no queremos que los valores contenidos<br />

en una columna puedan duplicarse.<br />

create table Persona (<br />

nombre varchar(40) not null,<br />

conyuge varchar(40) unique,<br />

);<br />

cónyuge no pue<strong>de</strong> contener valores duplicados, no permitiremos que dos personas tengan<br />

simultáneamente el mismo cónyuge.<br />

• primary key. Esta restricción especifica la columna o columnas que elegimos<br />

como clave primaria. Pue<strong>de</strong> haber múltiples columnas unique, pero<br />

sólo <strong>de</strong>be haber una clave primaria. Los valores que son únicos pue<strong>de</strong>n servir<br />

para i<strong>de</strong>ntificar una fila <strong>de</strong> la tabla <strong>de</strong> forma unívoca, por lo que se les<br />

<strong>de</strong>nomina claves candidatas.<br />

create table Persona (<br />

nss varchar(10) primary key,<br />

conyuge varchar(40) unique,<br />

);<br />

Al <strong>de</strong>finir una columna como primary key, se <strong>de</strong>fine implícitamente con unique. El nss<br />

(número <strong>de</strong> la seguridad social) no sólo es único, sino que lo utilizamos para i<strong>de</strong>ntificar<br />

a las personas.<br />

• references y foreign key. En el mo<strong>de</strong>lo relacional, establecemos las relaciones<br />

entre entida<strong>de</strong>s mediante la inclusión <strong>de</strong> claves foráneas en otras relaciones.<br />

PostgreSQL y SQL ofrecen mecanismos para expresar y mantener<br />

esta integridad referencial. En el siguiente ejemplo, las Mascotas tienen<br />

como dueño a una Persona:<br />

create table Mascota(<br />

nombre varchar(20),<br />

dueño varchar(10) references Persona,<br />

);

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

Saved successfully!

Ooh no, something went wrong!