Databases

T05-002 Restricciones

Enunciado

Restricción PRIMARY KEY II.

Sólo puede haber una clave primaria por tabla, pero ésta puede estar formada por varios campos. Dicha clave podrá ser referenciada como clave ajena en otras tablas.

Si la clave está formada por más de un campo, por ejemplo Nombre, Apellidos y Fecha de Nacimiento:

CREATE TABLE USUARIOS (
	Nombre VARCHAR2 (25),
	Apellidos VARCHAR2 (30),
	F_Nacimiento DATE,
	CONSTRAINT Usu_PK PRIMARY KEY(Nombre, Apellidos, F_Nacimiento));

Ejercicio:

La siguiente, es una tabla que almacena la información de los módulos en los que los alumnos pueden estar matriculados:

CREATE TABLE MODULOS (
    CODIGO NUMBER NOT NULL,
    NOMBRE VARCHAR2 (100),
    CICLO CHAR(3)
    );

Hay módulos que, teniendo el mismo código, se pueden impartir en distintos ciclos, como por ejemplo Bases de Datos. Por lo tanto, en dicha tabla no existe un atributo que, por sí solo, pueda identificar cada uno de los registros. En este caso, debemos identificar la clave primaria como compuesta por los atributos CODIGO y CICLO.

Tipo

DDL

Solución


												
CREATE TABLE MODULOS ( CODIGO NUMBER NOT NULL, NOMBRE VARCHAR2 (100), CICLO CHAR(3), PRIMARY KEY (CODIGO, CICLO) );

Prueba


											
SELECT USER_INDEXES.TABLE_NAME, CONSTRAINT_TYPE, COLUMN_NAME, COLUMN_POSITION FROM USER_CONSTRAINTS JOIN USER_INDEXES USING(INDEX_NAME) JOIN USER_IND_COLUMNS USING(INDEX_NAME) WHERE USER_INDEXES.TABLE_NAME = 'MODULOS' AND CONSTRAINT_TYPE = 'P' ORDER BY COLUMN_NAME;

Librerías (Onfly databases)


											
--