En el diseño de bases de datos, ¿qué significan n:m y 1:n?
¿Tiene algo que ver con claves o relaciones?
En el diseño de bases de datos, ¿qué significan n:m y 1:n?
¿Tiene algo que ver con claves o relaciones?
1:n
significa 'uno a muchos'; tienes dos tablas, y cada fila de la tabla A puede ser referenciada por cualquier número de filas en la tabla B, pero cada fila en la tabla B solo puede referenciar una fila en la tabla A (o ninguna).
n:m
(o n:n
) significa 'muchos a muchos'; cada fila en la tabla A puede referenciar muchas filas en la tabla B, y cada fila en la tabla B puede referenciar muchas filas en la tabla A.
Una relación 1:n
típicamente se modela utilizando una clave externa simple - una columna en la tabla A referencia una columna similar en la tabla B, típicamente la clave primaria. Dado que la clave primaria identifica única y exactamente una fila, esta fila puede ser referenciada por muchas filas en la tabla A, pero cada fila en la tabla A solo puede referenciar una fila en la tabla B.
Una relación n:m
no se puede hacer de esta manera; una solución común es utilizar una tabla de enlace que contiene dos columnas de clave externa, una para cada tabla que enlaza. Para cada referencia entre la tabla A y la tabla B, se inserta una fila en la tabla de enlace, que contiene los IDs de las filas correspondientes.
N:m --> si no conoces tanto n como m, simplemente es de muchos a muchos y se representa mediante una tabla puente entre otras 2 tablas como
-- Esta tabla contendrá nuestras llamadas telefónicas.
CREATE TABLE dbo.PhoneCalls
(
ID INT IDENTITY(1, 1) NOT NULL,
CallTime DATETIME NOT NULL DEFAULT GETDATE(),
CallerPhoneNumber CHAR(10) NOT NULL
)
-- Esta tabla contendrá nuestros "tickets" (o casos).
CREATE TABLE dbo.Tickets
(
ID INT IDENTITY(1, 1) NOT NULL,
CreatedTime DATETIME NOT NULL DEFAULT GETDATE(),
Subject VARCHAR(250) NOT NULL,
Notes VARCHAR(8000) NOT NULL,
Completed BIT NOT NULL DEFAULT 0
)
esta es la tabla puente para implementar el mapeo entre 2 tablas
CREATE TABLE dbo.PhoneCalls_Tickets
(
PhoneCallID INT NOT NULL,
TicketID INT NOT NULL
)
Uno a Muchos (1:n) es simplemente una tabla que tiene una columna como clave primaria y otra tabla que tiene esta columna como una relación de clave externa
Algo así como Producto y Categoría de Producto donde una categoría de producto puede tener muchos productos
En una base de datos relacional, todos los tipos de relaciones se representan de la misma manera: como relaciones. La(s) clave(s) candidata(s) de cada relación (y posiblemente otras restricciones también) determinan qué tipo de relación se está representando. 1:n y m:n son dos tipos de relaciones binarias:
C {Empleado*, Compañía}
B {Libro*, Autor*}
En cada caso, * designa el atributo clave(s). {Libro, Autor} es una clave compuesta.
C es una relación donde cada empleado trabaja solo para una compañía pero cada compañía puede tener muchos empleados (1:n): B es una relación donde un libro puede tener muchos autores y un autor puede escribir muchos libros (m:n):
Observe que las restricciones de clave aseguran que cada empleado solo puede estar asociado con una compañía, mientras que se permite cualquier combinación de libros y autores.
También son posibles otros tipos de relaciones: n-arias (con más de dos componentes); cardinalidad fija (m:n donde m y n son constantes o rangos fijos); direccionales; y así sucesivamente. William Kent en su libro "Data and Reality" identifica al menos 432 tipos - y eso es solo para relaciones binarias. En la práctica, las relaciones binarias 1:n y m:n son muy comunes y generalmente se destacan como especialmente importantes en el diseño y comprensión de modelos de datos.
Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.