mysql - 通过重复信息打破规则或尊重规则?

标签 mysql database-design

我有一个表 songs,其中包含列 titleauthor

一位作者可能创作了不止一首歌曲,因此某些信息会在此表中重复。

这个问题可以通过创建另一个表 authors (id,author) 并在 songs 表中创建对 authors_id 的引用来快速解决,这样我可以节省内存数据库,但我的应用程序实际上是一个搜索引擎,它将对 songs 表执行大量查询,例如,如果它返回 10 个不同作者的结果将需要在 authors 表上执行另外 10 次查询,以根据引用的 ID 找出作者姓名,这并不好,因为搜索引擎必须立即返回结果。

现在,如果我删除 authors 表,我将把作者的名字直接放在 songs 表中,我不需要执行其他查询,但是songs 表会更大,需要更多内存,因此返回时间也会增加。

你会如何处理这种情况?

PS:这只是一个类似于我的问题的简单映射,实际上我的应用程序和数据库要复杂得多,所以我不能在这里给出全部内容。

最佳答案

如果 songs 表存储了一个 author_id,那么您可以使用 join 返回您需要的所有信息一次查询。

如果您使用主键并正确连接,您的搜索结果立即返回。

MySQL Joins

关于mysql - 通过重复信息打破规则或尊重规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845749/

相关文章:

mysql - Java Spring应用程序中从Oracle迁移到MySQL : Connection Pooling

PHP PDO LIKE 语句不成功

php - 无法使用 php 使用 php 函数读取插入到 mysql 数据库中的行,就在函数被调用之后

mysql - : Keeping state of entity in database的最优解

database-design - 多个表之间共享关系的最佳实践

database-design - 用于博客的 mongodb 架构设计

没有主键的 MySQL 表(最佳实践)

mysql - 在数据库中建立多个表之间的关系

java - 如何从jdbc中的结果集中逐行获取所有数据

javascript - 使用 javascript、php 和 mysql 的动态表单字段 : strange error