【发布时间】:2016-07-23 08:32:57
【问题描述】:
我打算建立一个数据库来存储大量有关音乐的数据。
我将歌曲特定信息存储在db_song 表中。
我还想存储 genres、instruments、samples 和 playlists。
因为一首歌可以有多种流派、乐器、样本和播放列表,所以最大的问题是:
这样做是否更有意义:
- 将所有这 4 个数据存储在单独的表中
- 将这4个数据全部存储在一个表中,并在单独的列中记录type
数据库会经常更新,但用户会更频繁地请求数据。
感谢您的帮助。
编辑:
正如 Amit 所建议的那样,使用上面的设置,会有很多重复数据。 将流派和乐器值以及播放列表标题存储在不同的表中,并将流派、乐器和播放列表的关系(项目到歌曲)存储在另外 3 个表中。
所以新场景:
- 将所有这 4 个数据存储在单独的表中 + 4 个表中以存储项目到歌曲的关系
- 将这4个数据全部存储在一个表中,并在单独的列中记录类型 + 在另一列中记录与歌曲的关系
【问题讨论】:
-
性能只是数据复制的一方面。另一方面是数据管理本身。您将希望您的大部分数据管理实现自动化。但是有些事情你必须手动完成。如果您不小心,数百万行的手动处理将占用您所有的时间。非托管数据会腐烂。
标签: mysql database database-design normalization