Je reconstitue un site Web d'images. Le schéma de base est assez simple MySQL, mais j'ai du mal à représenter les éventuels drapeaux d'administration associés à une image ("inapproprié", "protégé par des droits d'auteur", etc.). Ma notion actuelle est la suivante:
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,
...
);
(tronqué pour faciliter la lecture; assortiment de clés et d'index étrangers sont en ordre, je le jure)
tblImageFlags.flagTypeID
est à clé étrangère sur une table de recherche des types d'indicateurs, et comme vous pouvez l'imaginer tblImageFlags.resolutionTypeID
doit être à clé étrangère sur luResolutionTypes.resolutionTypeID
. Le problème à résoudre est que, lorsqu'un drapeau est émis pour la première fois, il n'y a pas de type de résolution logique (je dirais que c'est une bonne utilisation de NULL
); cependant, si une valeur est définie, elle doit être à clé étrangère dans la table de recherche.
Je ne trouve pas de solution de contournement de la syntaxe MySQL à cette situation. Existe-t-il? Les meilleurs finalistes sont:
NULL
à luResolutionTypes.resolutionTypeID
(cela fonctionnerait-il même dans un AUTO_INCREMENT
colonne?)Merci pour la perspicacité!
PS Bonus indique à quiconque me dit si, dans le cas des bases de données, ce sont des "index" ou des "indices".
Suivi: merci à Bill Karwin pour avoir signalé ce qui s'est avéré être une erreur de syntaxe dans la structure du tableau (ne définissez pas une colonne sur NOT NULL
si vous voulez qu'il autorise NULL
!). Et une fois que j'aurai assez de karma pour vous donner ces points bonus, je le ferai :)
Vous pouvez résoudre ce problème en autorisant NULL
dans la colonne de clé étrangère tblImageFlags.resolutionTypeID
.
PS Bonus indique à quiconque me dit si, dans le cas des bases de données, ce sont des "index" ou des "indices".
Le pluriel de index doit être index .
Selon " Modern American Usage " de Bryan A. Garner:
À des fins ordinaires, index est le pluriel préférable, pas index . ... Indices , bien que moins prétentieux que les forums ou dogmata , est néanmoins prétentieux. Certains auteurs préfèrent les indices dans des contextes techniques, comme en mathématiques et en sciences. Bien que n'étant pas le meilleur pluriel pour index , index est autorisé dans le sens "indicateurs". ... Evitez le singulier indice , une contre-formation du pluriel indices .