Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/01/2013, 13:37
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No consigo compilar esta base de datos

NOT NULL debe ir en todo aquel atributo (campo) que sea mandatorio, es decir obligatorio. Es la forma de imponer una restricción a un campo para que no pueda faltar el dato.
Por otro lado, NOT NULL es obligatorio en las PK y en aquellas FK que representen relaciones necesarias, por ejemplo el numero de factura en la tabla de detalle de factura.

CONSTRAINT se usa para indicar el nombre que el sistema debe darle al objeto que administra la restricción de PK o FK que se declara.
No es obligatorio, pero si no lo pones, MySQL creará la constraint con un nombre generado por el sistema, que tu no conocerás a menos que sepas cómo encontrarlo.
Indicarlo permite asegurarse su denominación, pero se debe tener cuidado de no poner dos constraint diferentes con el mismo nombre, o se generará un error de ejecución, porque cada una que se indica genera un archivo en el sistema, y no pueden existir dos archivos del mismo nombre en la misma carpeta...
Por otro lado, hay que tener cuidado con el uso de mayúsculas y minúsculas, porque como son archivos, si el SO es sensible a mayúsculas/minúsculas (como Linux), puede traer problemas luego, cuando se redactan las consultas.
Esto último también es válido para los nombres de columnas, tablas, indices y demás objetos.
Por convención, se usar mayúsculas para los nombres de columnas y minúsculas para las tablas.

ON DELETE CASCADE ON UPDATE CASCADE se usa al crear las FK en aquellos casos donde no exista una restricción de borrado o actualización. Se usa para no tener que indicar que la tabla secundaria se borre si se elimina un objeto de la tabla referida, por ejemplo.
Pero es algo peligroso, porque elimina todos los registros de la cadena de dependencias, lo que puede causar desastres si se usa imprudentemente. Conviene usarlo sí y sólo si es necesario. No hay una regla fija. Depende del diseño del sistema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)