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

标签 mysql notifications relational-database tinyint

所以我对数据库结构很陌生。目前我需要为我的网络应用程序构建一个通知系统。经过谷歌搜索一段时间后,我发现 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/

相关文章:

Android 禁用通知声音

ruby-on-rails - 如何建立典型的用户HABTM角色关系

php - 通知: Undefined variable: dbname

php - 如何在 laravel DB::select 查询中使用分页

mysql - 加载 XML 的问题

firebase - ( ionic 4)当应用程序处于前台时无法使用 firebaseX 接收通知

php - 如何连接两个截然不同的mysql表,并同时按两列排序?

python - Airflow - 松弛通知。当我的程序使用 Airflow 失败时,我正在尝试配置松弛通知

mysql - 如何向这个庞大的 SQL 联合语句添加联接?

mysql - 具有/多种类型的单个对象的关系表设计