tablas - Cree una relación de uno a muchos usando SQL Server
relacion uno a uno access (5)
- Defina dos tablas (ejemplo A y B), con su propia clave primaria
- Defina una columna en la Tabla A que tenga una relación de clave externa basada en la clave principal de la Tabla B
Esto significa que la Tabla A puede tener uno o más registros relacionados con un solo registro en la Tabla B.
Si ya tiene las tablas en su lugar, use la instrucción ALTER TABLE para crear la restricción de clave externa:
ALTER TABLE A ADD CONSTRAINT fk_b FOREIGN KEY (b_id) references b(id)
-
fk_b
: Nombre de la restricción de clave foránea, debe ser único para la base de datos -
b_id
: Nombre de la columna en la Tabla A en la que está creando la relación de clave externa -
b
: Nombre de la tabla, en este caso b -
id
: Nombre de la columna en la Tabla B
¿Cómo creas una relación de uno a muchos usando SQL Server?
Así es como normalmente lo hago (servidor sql).
Create Table Master (
MasterID int identity(1,1) primary key,
Stuff varchar(10)
)
GO
Create Table Detail (
DetailID int identity(1,1) primary key,
MasterID int references Master, --use ''references''
Stuff varchar(10))
GO
Insert into Master values(''value'')
--(1 row(s) affected)
GO
Insert into Detail values (1, ''Value1'') -- Works
--(1 row(s) affected)
insert into Detail values (2, ''Value2'') -- Fails
--Msg 547, Level 16, State 0, Line 2
--The INSERT statement conflicted with the FOREIGN KEY constraint "FK__Detail__MasterID__0C70CFB4".
--The conflict occurred in database "Play", table "dbo.Master", column ''MasterID''.
--The statement has been terminated.
Como puede ver, la segunda inserción en el detalle falla debido a la clave externa. Aquí hay un buen enlace web que muestra varias sintaxis para definir FK durante la creación de la tabla o después.
Este es un ejemplo simple de un ejemplo clásico de Orden. Cada cliente puede tener varios pedidos , y cada pedido puede constar de varios pedidos .
Se crea una relación agregando una columna de clave externa . Cada registro de pedido tiene un CustomerID en él, que apunta a la ID del cliente. Del mismo modo, cada OrderLine tiene un valor OrderID. Así es como se ve el diagrama de la base de datos:
En este diagrama, hay restricciones reales de clave externa . Son opcionales, pero aseguran la integridad de sus datos. Además, hacen que la estructura de su base de datos sea más clara para cualquier persona que la use.
Supongo que sabes cómo crear las propias tablas. Entonces solo necesitas definir las relaciones entre ellos. Por supuesto, puede definir restricciones en T-SQL (según lo publicado por varias personas), pero también se agregan fácilmente con el diseñador. Con SQL Management Studio, puede hacer clic con el botón derecho en la tabla de pedidos , hacer clic en Diseño (creo que se puede llamar Editar en 2005). Luego, en cualquier lugar de la ventana que se abre, haga clic con el botón derecho y seleccione Relaciones .
Obtendrá otro cuadro de diálogo, a la derecha debería haber una vista de cuadrícula. Una de las primeras líneas lee " Especificación de tablas y columnas ". Haga clic en esa línea, luego haga clic nuevamente en el pequeño botón [...] que aparece a la derecha. Obtendrá este diálogo:
La tabla de pedidos ya debería estar seleccionada a la derecha. Seleccione la tabla de clientes en el menú desplegable de la izquierda. Luego, en la cuadrícula izquierda, seleccione la columna ID
. En la cuadrícula derecha, seleccione la columna CustomerID
. Cierra el diálogo, y el siguiente. Presione Ctrl + S para guardar.
Tener esta restricción asegurará que no existan registros de pedido sin un registro de cliente adjunto.
Para consultar de manera efectiva una base de datos como esta, es posible que desee leer sobre JOINs .
Si está hablando de dos tipos de enitidades, dicen profesores y alumnos, crearía dos tablas para cada una y una tercera para almacenar la relación. Esta tercera tabla puede tener dos columnas, por ejemplo, teacherID y StudentId. Si esto no es lo que está buscando, por favor haga su pregunta.
Si no está utilizando SSMS, aquí está la sintaxis:
ALTER TABLE <table_name>
ADD <constraint_name> FOREIGN KEY
(<column_name1> ,
<column_name2> )
REFERENCES <table_name>
(<column_name1> ,
<column_name2>)