2010-08-03 253 views

Respuesta

65

m:n se utiliza para denotar una relación de muchos a muchos (m objetos en el otro lado en relación con n en el otro), mientras que 1:n se refiere a una relación de uno a muchos (1 objeto en el otro lado en relación con n en el otro).

+5

Ah ok ok, entonces "m" y "n "se toman como variables que veo: D, pensé que" m "significaba" muchos "y por esa razón la" n "hizo confusión en cuanto a lo que representa (no puede significar" ninguno ", quiero decir). De todos modos, gracias: D –

+10

FYI, dado que nadie lo ha mencionado, el término Comp Sci para esta relación se llama "cardinalidad", ver http://en.wikipedia.org/wiki/Cardinality_%28data_modeling%29 para más detalles. –

1

muchos a muchos (n: m) uno a muchos (1: n)

44

1: n significa 'uno-a-muchos'; tiene dos tablas, y cada fila de la tabla A puede estar referenciada por cualquier número de filas en la tabla B, pero cada fila en la tabla B solo puede hacer referencia a una fila en la tabla A (o ninguna en absoluto).

n: m (o n: n) significa 'muchos a muchos'; cada fila de la tabla A puede hacer referencia a muchas filas en la tabla B, y cada fila en la tabla B puede hacer referencia a muchas filas en la tabla A.

Una relación 1: n es típicamente modelada usando un simple clave externa - una columna en la tabla A hace referencia a una columna similar en la tabla B, generalmente la clave principal. Dado que la clave primaria identifica de forma única exactamente una fila, esta fila puede referenciarse por muchas filas en la tabla A, pero cada fila en la tabla A solo puede hacer referencia a una fila en la tabla B.

Una relación n: m no se puede hacer de esta manera camino; una solución común es usar una tabla de enlace que contenga dos columnas de clave externa, una para cada tabla a la que se vincula. Para cada referencia entre la tabla A y la tabla B, se inserta una fila en la tabla de enlaces, que contiene los ID de las filas correspondientes.

+0

"tabla de enlace" también conocida como "tabla de unión" –

+0

"Ninguna en absoluto" -> ¿no sería una relación 0/1: n? (Raro) Mi comprensión de 1: n es que debe tener una. Como "Una ciudad debe estar en un país, pero los países pueden tener n ciudades", "Una empresa puede tener n empleados, pero un empleado debe trabajar para una empresa", ... –

2

Para explicar los dos conceptos con el ejemplo, imagine que tiene un sistema de entrada de pedidos para una librería. El mapeo de pedidos a artículos es de muchos a muchos (n: m) porque cada orden puede tener múltiples artículos, y cada artículo puede ordenarse por órdenes múltiples. Por otro lado, una búsqueda entre clientes y pedido es de uno a muchos (1: n) porque un cliente puede realizar más de un pedido, pero un pedido nunca es para más de un cliente.

5

n: m -> si usted no sabe tanto n como m es simplemente muchos a muchos y se representa mediante una tabla puente entre 2 otras mesas como

-- This table will hold our phone calls. 
CREATE TABLE dbo.PhoneCalls 
(
    ID INT IDENTITY(1, 1) NOT NULL, 
    CallTime DATETIME NOT NULL DEFAULT GETDATE(), 
    CallerPhoneNumber CHAR(10) NOT NULL 
) 

-- This table will hold our "tickets" (or cases). 
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 mesa de puente para la implementación de Correspondencia entre 2 mesas

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 principal y otra tabla que tiene esta columna como una relación de clave externa

Tipo de producto similar y Categoría de producto donde un producto Categoría puede tener Muchos productos

3

En una base de datos relacional, todos los tipos de relaciones se representan de la misma manera: como relaciones. Las claves candidatas de cada relación (y posiblemente otras restricciones también) determinan qué tipo de relación se está representando. 1: n y m: n dos tipos de relación binaria:

C {Employee*,Company} 
B {Book*,Author*} 

En cada caso * designa el atributo (s) clave. {Book, Author} es una clave compuesta.

C es una relación donde cada empleado trabaja por sólo uno empresa, pero cada empresa 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):

en cuenta que las principales limitaciones a asegurar que cada empleado sólo puede asociarse con una empresa, mientras que se permite cualquier combinación de libros y autores.

También son posibles otros tipos de relación: n-ary (que tiene más de dos componentes); cardinalidad fija (m: n donde m y n son constantes o rangos fijos); direccional; y así. William Kent en su libro "Data and Reality" identifica al menos 432 tipos, y eso es solo para las 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 la comprensión de los modelos de datos.

0

m: n se refiere a muchos a muchos donde como 1: n significa de uno a muchos relación porejemplo empleado (id, nombre, de habilidades) de habilidades (id, skillname, calificaciones)

en este caso el empleado puede tener muchas habilidades e ignorar otros casos, puede decir que es una relación 1: N

Cuestiones relacionadas