{% embed url="http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro14/32_reglas_de_integridad.html" %}
En el diseño de bases de datos relacionales, se llama clave primaria o clave principal a un campo o a una combinación de campos que identifica de forma única a cada fila de una tabla. Una clave primaria comprende de esta manera una columna o conjunto de columnas. No puede haber dos filas en una tabla que tengan la misma clave primaria.
https://es.wikipedia.org/wiki/Clave_primaria
Primary Keys pueden ser simples (o sea, una sola columna actúa como Primary Key).
create table tipo_documento
(
sigla varchar(10) primary key,
nombre_documento varchar(100),
estado varchar(40)
);
Primary Keys pueden ser compuestas (o sea, dos o más columnas actúan como Primary Key).
create table factura(
anio_factura int,
numero_factura int,
total double precision,
primary key (º, numero_factura)
);
{% embed url="https://en.wikipedia.org/wiki/Natural_key" %}
create table estudiante(
tipo_documento varchar(10),
numero_documento varchar(50),
nombres varchar(200),
apellidos varchar(200),
password varchar(256),
primary key (tipo_documento, numero_documento)
);
{% embed url="https://en.wikipedia.org/wiki/Surrogate_key" %}
{% embed url="https://www.mssqltips.com/sqlservertip/5431/surrogate-key-vs-natural-key-differences-and-when-to-use-in-sql-server/" %}
create table estudiante2
(
id int auto_increment, # 4 bytes
tipo_documento varchar(10) not null , # 11 bytes
numero_documento varchar(50) not null , # 51 bytes
nombres varchar(200),
apellidos varchar(200),
password varchar(256),
primary key (id),
unique (tipo_documento, numero_documento) # 62 bytes insert, update
);
{% embed url="https://es.wikipedia.org/wiki/Clave_for%C3%A1nea" %}
Una llave foránea es una campo que referencia a una llave primaria en otra tabla o la misma
create table curso(
ficha int,
cantidad_estudiantes int not null,
estado varchar(40) not null ,
primary key (ficha)
);
create table estudiante(
tipo_documento varchar(10) not null,
numero_documento varchar(50) not null,
nombres varchar(200) not null ,
apellidos varchar(200) not null ,
password varchar(256) not null ,
ficha int not null,
constraint pk_estudiante primary key (tipo_documento, numero_documento),
constraint fk_curso foreign key (ficha) references curso(ficha)
);
la llave foránea se puede codificar de la siguiente forma
constraint fk_curso foreign key (ficha) references curso(ficha)