0

所以我对数据库结构很陌生。目前我需要为我的 Web 应用程序构建一个通知系统。谷歌搜索了一段时间后,我发现第一个答案很有趣。

为什么 activity_type 是 TINYINT?它不应该是字符串吗,因为他说示例值就像“添加的最爱”。任何人都可以帮忙吗?

4

1 回答 1

1

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

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

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

在一个数据库列中,所有值都应该具有相同的含义——它们都应该来自同一个信息域。如果有“thing_id”列,它应该始终引用事物表中一行的“id”。它有时应该引用“thing1”表中的一行,或者有时可能引用“thing2”表中的一行,具体取决于“thing_type”是设置为“1”还是“2”……哎呀。

这种设计可能有可行的用例,但我会将此模型解释为数据库没有执行参照完整性的危险信号……这与关系数据库的最佳实践不一致。

注意他最后的评论......

没有加入。

他并没有真正将关系数据库用作关系数据库。他几乎将它用作某种键/值存储。

于 2016-05-13T01:11:00.270 回答