Cita: Definitivamente no es necesario agregar not null cuando pones default un valor.. y el campo referencia no puede ser char.. debe de ser tipo entero ya que es la llave primaria..
Una PRIMARY KEY no tiene como requisito ser numérico, sino
ser único e identificar univocamente un registro en una tabla, sin importar el valor que los otros campos tengan.
Una PK se puede hacer con VARCHAR, CHAR, DATETIME, TIMESTAMP, INT, FLOAT o
cualquier otro tipo de dato válido, con una o más columnas combinadas, porque
no es el tipo de dato lo que define la PK, sino su calidad de irrepetible y no nulo.
Por caso, las placas de los automóviles son perfectamente usables como PK de registros de vehículos, y la inmensa mayoría de ellas, en todos los países, llevan letras. Los números de documentos de identidad, además, también es conveniente que sean alfanuméricos, por las combinaciones en los que hay ceros por delante, o incluso letras y símbolos. Y así puedo seguir dando ejemplos.
El uso de enteros incrementales es una costumbre generalizada por su simplicidad, aunque eso no significa que sea la más eficiente de las formas para casos determinados.
Depende del diseño del modelo de datos.
En realidad, según las reglas de normalización de relaciones, se debe incorporar un campo ID numéricos
si y sólo si no existe ninguna clave candidata para la entidad.