38 - Restricción primary key


Primer problema:

Una empresa tiene registrados datos de sus empleados en una tabla llamada "empleados".

1- Elimine la tabla:

  drop table empleados;

2- Créela con la siguiente estructura:

 create table empleados (
  documento char(8),
  nombre varchar2(30),
  seccion varchar2(20)
 );

3- Ingrese algunos registros, dos de ellos con el mismo número de documento:

4- Intente establecer una restricción "primary key" para la tabla para que el documento no se repita ni admita valores nulos.
No lo permite porque la tabla contiene datos que no cumplen con la restricción, debemos eliminar (o modificar) el registro que tiene documento duplicado.

5- Establecezca la restricción "primary key" del punto 4

6- Intente actualizar un documento para que se repita.
No lo permite porque va contra la restricción.

7-Intente establecer otra restricción "primary key" con el campo "nombre".

8- Vea las restricciones de la tabla "empleados" consultando el catálogo "user_constraints" (1 restricción "P")

9- Consulte el catálogo "user_cons_columns"

Ver solución

  drop table empleados;

 create table empleados (
  documento char(8),
  nombre varchar2(30),
  seccion varchar2(20)
 );

 insert into empleados
  values ('22222222','Alberto Lopez','Sistemas');
 insert into empleados
  values ('23333333','Beatriz Garcia','Administracion');
 insert into empleados
  values ('23333333','Carlos Fuentes','Administracion');

 alter table empleados
 add constraint PK_empleados_documento
 primary key(documento);

 delete from empleados
  where nombre='Carlos Fuentes';

 alter table empleados
 add constraint PK_empleados_documento
 primary key(documento);

 update empleados set documento='22222222'
  where documento='23333333';

 alter table empleados
 add constraint PK_empleados_nombre
 primary key(nombre);

 select *from user_constraints where table_name='EMPLEADOS';

 select *from user_cons_columns where table_name='EMPLEADOS';

 

Segundo problema:

Una empresa de remises tiene registrada la información de sus vehículos en una tabla llamada "remis".

1- Elimine la tabla:

  drop table remis;

2- Cree la tabla con la siguiente estructura:

 create table remis(
  numero number(5),
  patente char(6),
  marca varchar2(15),
  modelo char(4)
 );

3- Ingrese algunos registros sin repetir patente y repitiendo número.

4- Ingrese un registro con patente nula.

5- Intente definir una restricción "primary key" para el campo "numero".

6- Intente establecer una restricción "primary key" para el campo "patente".

7- Modifique el valor "null" de la patente.

8- Establezca una restricción "primary key" del punto 6.

9- Vea la información de las restricciones consultando "user_constraints" (1 restricción "P")

10- Consulte el catálogo "user_cons_columns" y analice la información retornada (1 restricción)


Ver solución
  drop table remis;

 create table remis(
  numero number(5),
  patente char(6),
  marca varchar2(15),
  modelo char(4)
 );

 insert into remis values(1,'ABC123','Renault 12','1990');
 insert into remis values(1,'DEF456','Fiat Duna','1995');

 insert into remis values(2,null,'Renault Clio','1990');

 alter table remis
 add constraint PK_remis_numero
 primary key(numero);

 alter table remis
 add constraint PK_remis_patente
 primary key(patente);

 update remis set patente='AIC222' where patente is null;

 alter table remis
 add constraint PK_remis_patente
 primary key(patente);

 select *from user_constraints where table_name='REMIS';

 select *from user_cons_columns where table_name='REMIS';

Retornar