studio - relacionar tablas en sql server por codigo
Descripción de las reglas de actualización y eliminación de relaciones en SSMS 2008 (4)
La página de MSDN parece un buen comienzo.
Estoy confundido acerca de lo que significa la regla de actualización y eliminación en SQL Server 2008 Management Studio cuando definimos restricciones de clave externa. Tampoco encontré documentos de ayuda relacionados (por ejemplo, ayuda de F1).
Aquí está la instantánea de la pantalla. Aprecie si alguien podría describir lo que significan y recomiende algunos documentos relacionados para leer. :-)
La clave externa define una relación padre-hijo entre dos tablas. La clave principal en la tabla principal es la clave externa en hasta n filas de tablas secundarias.
Ahora, si esa clave primaria en la tabla principal obtiene ACTUALIZACIÓN, se activa la REGLA DE ACTUALIZACIÓN. O todas las filas secundarias también se actualizan, se establecen en NULL o lo que sea. Sin embargo, la mejor práctica es tener una clave principal que NUNCA cambie (una ID fija o algo así), por lo que esa es la regla menos importante.
La más importante es la regla DELETE: ¿qué sucede si se elimina la fila principal (por ejemplo, se elimina la orden)? También puede eliminar todas las filas secundarias (todas las líneas de pedido) con CASCADE DELETE, o puede establecer su clave externa en NULL (ya no tienen un padre), eso depende totalmente de su escenario concreto.
En el escenario de líneas de orden / orden, puede ser totalmente útil eliminar las líneas de orden cuando se borra la orden completa, pero probablemente no desee eliminar un producto, solo porque una orden que hace referencia a la misma se ha eliminado, no hay Una sola respuesta CORRECTA - depende de su escenario y su aplicación.
Bagazo
Parece que la documentación está en el cuadro de diálogo Relaciones de clave externa .
Por cierto, la ayuda de F1 funcionó bien para mí en SSMS 2008. Me llevó directamente a la página anterior (después de buscar 1/2 hora en línea, por supuesto).
Un campo de clave externa solo puede almacenar un valor nulo o un valor definido por el campo de clave principal.
Si intenta cambiar el valor de la clave externa a algo que no está definido por una clave principal, obtendrá un error. Del mismo modo, si intenta cambiar una clave principal que tiene dependencias de claves externas, obtendrá un error ... como ejemplo
Models table
modelID (primary key) model
1 Jeep
2 Ford
Customer table
id customer modelID (foreign key of Models.modelID)
1 1234 1
2 2345 2
Si intenta eliminar el registro Jeep de los Modelos, recibirá un error porque el cliente 1234 tiene un ID de modelo establecido en 1, y esto si es la clave externa. Del mismo modo, si trato de actualizar al cliente 1234 para que tenga un ID de modelo de 3, se generará un error porque no hay una clave principal en la tabla de Modelos con un valor de 3