我正在构建一个网站,其中用户可以执行各种操作,并且他们可以获得可变数量的“点数”或“徽章”以执行特定操作。无论用户执行哪种类型的操作(例如用户ID,操作类型,时间戳,当前点总数以及授予的任何徽章),都必须存储某些数据。但取决于用户执行的操作类型,必须存储一些特定于操作类型的数据,包括BLOB中的图像数据。在MySQL中存储用户操作数据:一个表还是多个表?
一个选项是包含动作表中所有动作类型的所有字段。不幸的是,这些列中的每一列只会存储与适当操作类型匹配的小部分操作的数据。所以我会用这种方法有大量的空字段(包括BLOB)。
另一种选择是除上述动作表之外,还包括每个动作类型的表格。每个动作类型表都有一个外键给动作表中的相关动作。这将使动作表更好地组织,但它引入动作表与动作类型表不同步的可能性。我还想知道,无论何时从动作表中获取数据,都必须在不同的动作类型表上进行大量连接,从而影响性能。
最后,我对速度而不是尺寸进行了优化。我应该如何解决这个困境?