TINYINT 如何在 MySQL 上存储字符串值

How can TINYINT store strings value on MySQL

所以我对数据库结构还很陌生。目前我需要为我的网络应用程序构建一个通知系统。谷歌搜索一段时间后,我发现 the first answer 很有趣。

为什么 activity_type 是 TINYINT?它不应该是字符串吗,因为他说示例值就像 'added favourite'。有人可以帮忙吗?

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

他在 TINYINT 中使用具有神奇含义的数字,并且很可能在他的代码中表示为常量,因此 1 表示一种 activity,2 表示另一种,等等,并且仅代码知道这些含义——不是数据库。

然后是 "source_id",它引用了一个未声明的、未强制执行的外键,引用了其他几个 table 之一。不要这样做。

在一个数据库列中,所有值都应该具有相同的含义——它们都应该来自同一个信息域。如果有 "thing_id" 列,它应该始终引用事物 table 中一行的 "id"。它应该 而不是 有时引用 "thing1" table 中的一行,或者有时引用 "thing2" table 中的一行,具体取决于"thing_type" 是否设置为“1”或“2”...糟糕。

这样的设计可能有可行的用例,但我会将此模型解释为数据库的危险信号警告,该数据库未强制执行参照完整性...并且这与关系数据库的最佳实践不一致.

他最后一条评论的注释...

No joins.

他并不是真的把关系数据库当作关系数据库来使用。他几乎将其用作某种 key/value 商店。