所以我对数据库结构还很陌生。当前,我需要为我的Web应用程序构建一个通知系统。搜寻了一段时间后,我发现the first answer很有趣。
为什么activity_type是TINYINT?它不是应该是字符串,因为他说示例值就像“添加了收藏夹”。有人可以帮忙吗?
最佳答案
是的,不要遵循该示例。
他在TINYINT
中使用具有神奇含义的数字,并且很可能在代码中将其表示为常量,因此1表示一种活动,2表示另一种活动,等等,并且只有代码知道这些含义,而不是数据库。
然后是“ source_id”,它引用一个未声明的,未强制执行的外键,该外键引用了其他几个表之一。不要这样
在数据库列中,所有值都应具有相同的含义-它们都应来自同一信息域。如果有“ thing_id”列,则应始终引用事物表中一行的“ id”。取决于“ thing_type”是设置为“ 1”还是“ 2” ... yuck,它有时不应引用“ thing1”表中的行,或者有时不应引用“ thing2”表中的行。
这样的设计可能有可行的用例,但我会将此模型解释为对没有强制执行引用完整性的数据库的警告,这与关系数据库的最佳做法不符。
请注意他的最后评论...
没有加入。
他并没有真正使用关系数据库作为关系数据库。他几乎将其用作某种键/值存储。
关于mysql - TINYINT如何在MySQL上存储字符串值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37198693/