我拼凑了一个图片网站。基本模式是非常简单的MySQL,但是在尝试表示与图像相关联的可能的管理标志(“不合适”,“受版权保护”等)时遇到了一些麻烦。我目前的概念如下:
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, ... );
(为了方便阅读而被截断;我发誓要搭配各种外键和索引)
tblImageFlags.flagTypeID在标志类型的查找表上是外键,并且您可以想象tblImageFlags.resolutionTypeID 应该 在上外键luResolutionTypes.resolutionTypeID。现在的问题是,当第一次发出标志时,没有逻辑解析类型(我将其声明为的一种很好的用法NULL)。但是,如果设置了值,则应将其外键到查找表。
tblImageFlags.flagTypeID
tblImageFlags.resolutionTypeID
luResolutionTypes.resolutionTypeID
NULL
我找不到这种情况的MySQL语法解决方法。是否存在?最佳亚军是:
AUTO_INCREMENT
感谢您的见解!
PS Bonus指向任何告诉我的人,就数据库而言,是“索引”还是“索引”。
后续 :感谢Bill Karwin指出原来是表结构中的语法错误(NOT NULL如果希望允许,请勿将列设置为NULL!)。一旦我有足够的业力为您提供这些奖励积分,我就会:)
NOT NULL
您可以通过NULL在外键列中允许解决此问题tblImageFlags.resolutionTypeID。
索引 的复数应该是 index 。
根据布莱恩·加纳(Bryan A. Garner)的《现代美国人的用法》:
出于普通目的, 索引 是首选的复数,而不是 索引 。… 索引 虽然比 论坛 或 教条要不要 那么自命不凡,但仍然自命不凡。一些作家更喜欢在技术方面的 索引 ,例如在数学和科学方面。虽然不是最好的多个 指数 , 指数 是在这个意义上允许的“指标”。…避免单数 索引 ,即复数 索引的 倒数 形式。 __