tabla puede pudo modificar llave foranea extranjera existe error crear creada constraint compuesta columna clave ajena agregar adicionar mysql database null foreign-keys referential-integrity

mysql - puede - llave foranea phpmyadmin



¿Clave externa de MySQL para permitir NULL? (1)

Estoy reconstruyendo un sitio web de imágenes. El esquema básico es bastante simple MySQL, pero estoy teniendo problemas para tratar de representar posibles indicadores de administración asociados con una imagen ("inapropiado", "con derechos de autor", etc.). Mi noción actual es la siguiente:

tblImages ( imageID INT UNSIGNED NOT NULL AUTO_INCREMENT, ... ); tblImageFlags ( imageFlagID INT UNSIGNED NOT NULL AUTO_INCREMENT, imageID INT UNSIGNED NOT NULL, flagTypeID INT UNSIGNED NOT NULL, resolutionTypeID INT UNSIGNED NOT NULL, ... ); luResolutionTypes ( resolutionTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT, resolutionType VARCHAR(63) NOT NULL, ... );

(Truncado para facilitar la lectura, una variedad de claves foráneas e índices están en orden, lo juro)

tblImageFlags.flagTypeID tiene una clave foránea en una tabla de búsqueda de tipos de banderas, y como se puede imaginar, tblImageFlags.resolutionTypeID debe tener una clave luResolutionTypes.resolutionTypeID en luResolutionTypes.resolutionTypeID . El problema es que, cuando se emite una bandera por primera vez, no hay un tipo de resolución lógica (yo declararía que esto es un buen uso de NULL ); sin embargo, si se establece un valor, debe tener una clave externa en la tabla de búsqueda.

No puedo encontrar una solución de sintaxis MySQL para esta situación. ¿Existe? Los mejores finalistas son:

  • Agregue un tipo de resolución "no moderada"
  • Agregue una entrada NULL a luResolutionTypes.resolutionTypeID (¿esto funcionaría incluso en una columna AUTO_INCREMENT ?)

Gracias por la visión!

PS Bonus apunta a quien me dice si, en el caso de las bases de datos, son "índices" o "índices".

Seguimiento : gracias a Bill Karwin por señalar lo que resultó ser un error de sintaxis en la estructura de la tabla (¡no configure una columna en NOT NULL si quiere que permita NULL !). Y una vez que tenga suficiente karma para darte esos puntos de bonificación, lo haré :)


Puede resolver esto permitiendo NULL en la columna de clave foránea tblImageFlags.resolutionTypeID .

PS Bonus apunta a quien me dice si, en el caso de las bases de datos, son "índices" o "índices".

El plural del índice debe ser índices .

De acuerdo con " Modern American Usage " de Bryan A. Garner:

Para propósitos ordinarios, los índices son preferibles en plural, no en índices . ... Sin embargo, los índices , aunque menos pretenciosos que los foros o dogmatas , son pretenciosos. Algunos escritores prefieren índices en contextos técnicos, como en matemáticas y ciencias. Aunque no es el mejor plural para el índice , los índices son permisibles en el sentido de "indicadores". ... Evite el índice singular, una formación inversa de los índices en plural.