37 - Restricción primary key


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

1- Créela con la siguiente estructura:
 create table empleados (
  documento varchar(8) not null,
  nombre varchar(30),
  seccion varchar(20)
 );

2- Ingrese algunos registros, dos de ellos con el mismo número de documento:
 insert into empleados
  values ('22222222','Alberto Lopez','Sistemas');
 insert into empleados
  values ('23333333','Beatriz Garcia','Administracion');
 insert into empleados
  values ('23333333','Carlos Fuentes','Administracion');

3- 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:

4- Establezca la restricción "primary key" del punto 3

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

6-Intente establecer otra restricción "primary key" con el campo "nombre".
No lo permite, sólo puede haber una restricción "primary key" por tabla.

7- Intente ingresar un registro con valor nulo para el documento.
No lo permite porque la restricción no admite valores nulos.

8- Vea las restricciones de la tabla empleados (2 filas)
Ver solución

 create table empleados (
  documento varchar(8) not null,
  nombre varchar(30),
  seccion varchar(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);

 insert into empleados values(null,'Marcelo Juarez','Sistemas');

 select * from empleados;

 select *
  from information_schema.table_constraints 
  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- Cree la tabla con la siguiente estructura:
 create table remis(
  numero serial,
  patente char(6),
  marca varchar(15),
  modelo char(4)
 );

2- Ingrese algunos registros sin repetir patente:
 insert into remis (patente,marca,modelo)values('ABC123','Renault 12','1990');
 insert into remis (patente,marca,modelo)values('DEF456','Fiat Duna','1995');

3- Definir una restricción "primary key" para el campo "patente".

4- Establezca una restricción "primary key" para el campo "numero".
(No lo permite ya que hay una "primary key")

5- Vea la información de las restricciones

Ver solución
 create table remis(
  numero serial,
  patente char(6),
  marca varchar(15),
  modelo char(4)
 );

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

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

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

 select *
  from information_schema.table_constraints 
  where table_name = 'remis';


Retornar