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