0% encontró este documento útil (0 votos)
8 vistas7 páginas

Base de Datos Relacionales

Cargado por

eduardo070901
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas7 páginas

Base de Datos Relacionales

Cargado por

eduardo070901
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Base de Datos Relacionales: Claves y Relaciones

🔑 Diferencias entre Clave Primaria, Clave Foránea y Clave Índice

Clave Primaria (Primary Key)

· Identificador único de cada registro en una tabla

· No permite valores nulos ni duplicados

· Solo puede haber una por tabla

· Ejemplo: ID_Usuario en la tabla Usuarios

Clave Foránea (Foreign Key)

· Establece relación entre dos tablas

· Referencia a una clave primaria de otra tabla

· Puede tener valores nulos y duplicados (dependiendo de la relación)

· Puede haber varias en una tabla

· Ejemplo: ID_Usuario en la tabla Pedidos que referencia a Usuarios

Clave Índice (Index)

· Mejora el rendimiento de las consultas

· No garantiza unicidad (a menos que sea único)

· Puede crearse sobre cualquier campo

· Puede haber múltiples índices por tabla

· Ejemplo: Índice en el campo Email para búsquedas rápidas


👤 Relación Uno a Uno (One-to-One)

Ejemplo 1: Usuario - Perfil

```sql

CREATE TABLE Usuarios (

ID_Usuario INT PRIMARY KEY,

Email VARCHAR(100) UNIQUE NOT NULL,

Fecha_Registro DATE

);

CREATE TABLE Perfiles (

ID_Perfil INT PRIMARY KEY,

ID_Usuario INT UNIQUE NOT NULL,

Nombre_Completo VARCHAR(100),

Telefono VARCHAR(15),

FOREIGN KEY (ID_Usuario) REFERENCES Usuarios(ID_Usuario)

);

```

Explicación: Cada usuario tiene exactamente un perfil y cada perfil


pertenece a un solo usuario.

Ejemplo 2: Empleado - Despacho

```sql

CREATE TABLE Empleados (


ID_Empleado INT PRIMARY KEY,

Nombre VARCHAR(100) NOT NULL,

Puesto VARCHAR(50)

);

CREATE TABLE Despachos (

ID_Despacho INT PRIMARY KEY,

ID_Empleado INT UNIQUE NOT NULL,

Numero_Despacho VARCHAR(10),

Piso INT,

FOREIGN KEY (ID_Empleado) REFERENCES Empleados(ID_Empleado)

);

```

Explicación: Cada empleado tiene asignado exclusivamente un


despacho.

👥 Relación Uno a Muchos (One-to-Many)

Ejemplo 1: Cliente - Pedidos

```sql

CREATE TABLE Clientes (

ID_Cliente INT PRIMARY KEY,

Nombre_Empresa VARCHAR(100) NOT NULL,

Contacto VARCHAR(100)

);
CREATE TABLE Pedidos (

ID_Pedido INT PRIMARY KEY,

ID_Cliente INT NOT NULL,

Fecha_Pedido DATE,

Total DECIMAL(10,2),

FOREIGN KEY (ID_Cliente) REFERENCES Clientes(ID_Cliente)

);

```

Explicación: Un cliente puede realizar muchos pedidos, pero cada pedido


pertenece a un solo cliente.

Ejemplo 2: Departamento - Empleados

```sql

CREATE TABLE Departamentos (

ID_Departamento INT PRIMARY KEY,

Nombre_Departamento VARCHAR(50) NOT NULL,

Presupuesto DECIMAL(15,2)

);

CREATE TABLE Empleados (

ID_Empleado INT PRIMARY KEY,

ID_Departamento INT NOT NULL,

Nombre VARCHAR(100) NOT NULL,

Salario DECIMAL(10,2),
FOREIGN KEY (ID_Departamento) REFERENCES
Departamentos(ID_Departamento)

);

```

Explicación: Un departamento puede tener muchos empleados, pero


cada empleado trabaja en un solo departamento.

🔄 Relación Muchos a Muchos (Many-to-Many)

Ejemplo 1: Estudiantes - Cursos

```sql

CREATE TABLE Estudiantes (

ID_Estudiante INT PRIMARY KEY,

Nombre VARCHAR(100) NOT NULL,

Carrera VARCHAR(50)

);

CREATE TABLE Cursos (

ID_Curso INT PRIMARY KEY,

Nombre_Curso VARCHAR(100) NOT NULL,

Creditos INT

);

-- Tabla intermedia (puente)

CREATE TABLE Matriculas (

ID_Matricula INT PRIMARY KEY,


ID_Estudiante INT NOT NULL,

ID_Curso INT NOT NULL,

Fecha_Matricula DATE,

Calificacion DECIMAL(3,1),

FOREIGN KEY (ID_Estudiante) REFERENCES


Estudiantes(ID_Estudiante),

FOREIGN KEY (ID_Curso) REFERENCES Cursos(ID_Curso)

);

```

Explicación: Un estudiante puede matricularse en muchos cursos y un


curso puede tener muchos estudiantes.

Ejemplo 2: Productos - Pedidos

```sql

CREATE TABLE Productos (

ID_Producto INT PRIMARY KEY,

Nombre_Producto VARCHAR(100) NOT NULL,

Precio DECIMAL(10,2)

);

CREATE TABLE Pedidos (

ID_Pedido INT PRIMARY KEY,

Fecha_Pedido DATE,

Cliente VARCHAR(100)

);
-- Tabla intermedia (detalle)

CREATE TABLE Detalle_Pedidos (

ID_Detalle INT PRIMARY KEY,

ID_Pedido INT NOT NULL,

ID_Producto INT NOT NULL,

Cantidad INT NOT NULL,

Precio_Unitario DECIMAL(10,2),

FOREIGN KEY (ID_Pedido) REFERENCES Pedidos(ID_Pedido),

FOREIGN KEY (ID_Producto) REFERENCES Productos(ID_Producto)

);

```

Explicación: Un pedido puede contener muchos productos y un producto


puede estar en muchos pedidos.

📊 Resumen Visual de las Relaciones

Tipo Relación Estructura Cardinalidad

Uno a Uno A ←→ B 1:1

Uno a Muchos A ←→ BBB 1:N

Muchos a Muchos AAA ↔ BBB M:N

También podría gustarte