2011-12-20 34 views
-1

我想知道是否有某种方法可以将两个索引合并为第三个以使序列号排序......例如: 如果我想创建音乐数据库 我会从表格艺术家开始与 -artist_name -artist_id(主键) -....MySQL将两个索引合并为一个

然后用 -album_name -album_id(PK)表的专辑 -...

再表歌曲 - song_title -song_id

比方说,艺术家将X具有artist_id - 12345 然后专辑Y中album_id - 678 我想song_id是12345.678.xxx(只为理念的可视化,artist_id和album_id的长度会点是不变的)

我的问题是。有可能吗? 因为我有一种感觉,这将通过数据库执行更好的搜索。 不仅在我的song_id中我有完整的艺术家和专辑信息(我不需要使用外键),它应该加快任何关于来自同一专辑或同一个艺术家的其他专辑的歌曲的查询。一个索引中的所有信息只需要某种提取。

或者,也许它只是我最小的关于MySQL的知识? :)

+0

好吧,我会在起跑时刺伤,尽管我不能100%明白你在这个位置上的位置。您可以将字段组合到两个索引或主键(这实际上是一个专门的索引)。但规范化数据结构的想法是保持数据库的大小很小,并且有助于维护,而不是减少对外键的依赖。因此,当王子再次更改姓名时,您希望能够更新Artist表中的单个记录,而不是更新artist_album_song表中的1000条记录。 – 2011-12-20 22:35:53

+0

您是否真的指MySQL的意义上的“索引”?看起来好像你还没有创建任何实际定义艺术家,歌曲和专辑之间关系的表格。这些对于使用关系数据库至关重要。您确实需要阅读如何正确设计数据库的数据模型。 – Poodlehat 2011-12-20 22:37:17

+0

其实我并不完全确定我要去哪里,但说实话..如果王子将改变他的名字,已经在市场上的专辑将永远不会改变名称:) – cyvvilek 2011-12-20 22:38:09

回答

0

将artists_id和album_id保留为歌曲表中的单独列,并包含正确的外键关系和索引。这将为您提供数据完整性和查询性能的最佳组合。

+0

:)我害怕我是神志不清... :) – cyvvilek 2011-12-20 22:45:33