2016-05-12 119 views
0

所以我很新的数据库结构。目前我需要为我的Web应用程序构建一个通知系统。谷歌搜索一段时间后,我发现the first answer是有趣的。TINYINT如何在MySQL上存储字符串值

为什么activity_type是TINYINT?难道它不是字符串,因为他说示例值就像是“最喜欢的”。任何人都可以帮忙

回答

0

是的,不要效仿这个例子。

他使用TINYINT中的数字,它们具有神奇的意义,并且很可能在他的代码中表示为常量,所以1表示一种活动,2表示另一种等,并且只有代码知道这些含义 - 而不是数据库。

然后有一个“source_id”引用一个未声明的,未强制的外键引用其他几个表之一。不要这样做。

在数据库列中,所有值应该具有相同的含义 - 它们应该全部来自同一个信息域。如果有“thing_id”列,则应该始终引用thing表中某行的“id”。应该是而不是有时候指的是“thing1”表中的一行,或者根据“thing_type”被设置为“1”还是“2”......其他时间可能是“thing2”表中的一行。

这种设计可能存在可行的用例,但我会将此模型解释为数据库的红旗警告,该数据库没有执行参照完整性......这与关系数据库的最佳实践不一致。从他最后的评论

注...

没有加入。

他没有真正使用关系数据库作为关系数据库。他几乎将它用作某种关键/价值商店。

+0

好吧,说,我明白你的意思。那么有什么改进建议? –