she*_*ron 6 mysql performance foreign-key hierarchy duplication
我有一个嵌套表层次结构,类似于以下一个(这是一个示例,但足以很好地演示模式):
+---------+ +---------+ +---------+ +-------------+
| users | | blogs | | posts | | comments |
+---------+ +---------+ +---------+ +-------------+
| user_id | | blog_id | | post_id | | comment_id |
| email | | user_id | | blog_id | | post_id |
+---------+ | name | | content | | comment |
+---------+ +---------+ +-------------+
Run Code Online (Sandbox Code Playgroud)
因此,对象层次结构很明确:评论属于单个帖子,属于单个博客,属于单个用户。
现在,在我的应用程序代码中,我想验证评论只能由拥有帖子的博客的用户阅读(假设这些是私人评论,好吗?)。例如,当 I 时SELECT * FROM comments WHERE comment_id = 666
,我想验证请求用户“拥有”该评论。
我的困境是:你会建议我:
user_id
to comments
,所以我总是可以快速参考拥有的用户,并且检查用户 ID(在选择期间或之后)很简单,或者基本上我认为它是性能与所谓的数据复制不良做法 - 但在这种情况下真的是一种不良做法吗?user_id
值不太可能改变或 ablog
改变其user_id
.
如果这有什么不同,我正在使用 MySQL(实际上是 MariaDB)。
显然,出于多种原因,您应该选择第二个选项:
如果您需要提出同一评论级别的实体,您会再次添加用户 ID 吗?也许它不会发生在你的场景中,但仍然会发生。
存储,随着数据库大小的增长
不会对性能产生太大影响,因为您的查询是高度选择性的并且如果您有良好的索引设计。
归档时间: |
|
查看次数: |
1204 次 |
最近记录: |