gpt4 book ai didi

mysql - 将 varchar 值转换为 mysql 中的主键

转载 作者:行者123 更新时间:2023-11-29 12:17:39 25 4
gpt4 key购买 nike

我对 mysql 和数据库都很陌生,所以请原谅它的简单性。我有一个包含 13,000 行的 excel/csv 电子表格,其中包含以下字段“乐队名称 | 歌曲标题 | MP3Link”(不是实际字段,为了便于说明,我对此进行了简化)。

我希望将其转换为 mysql 数据库,以便我可以在我的网站上显示按 Bandname 分组的歌曲。显然我有多行来自同一乐队的歌曲数据。

对于一个运行良好的数据库,我猜测理想情况下我应该有一个单独的表,其中只包含乐队名称(我们称之为“乐队名称”表)和一个自动递增主键“乐队名称ID”。然后我猜测我的“Songname”表会有一个包含该键的列来查找它。

问题...

  1. 我猜测,在通过 AC/DC 查找所有歌曲时,这种 2 表格式的执行速度会比通过单个表查找时快得多(假设我有 13,000 条记录) - 是这样吗?正确还是错误?

  2. 如果我确实将数据分成 2 个表,如何循环遍历“SongName”表以将值“AC/DC”的所有实例转换为正确的外键“13”而无需交叉-为每个频段手动引用和输入它会花费很长时间?

  3. 我确实有一个没有重复的所有乐队名称的单独列表 - 我可以只拥有该 varchar 数据列表并将其用作查找该特定艺术家的歌曲的主键吗?在一张 table 上这样做还有什么意义吗?

最佳答案

问题 1:性能和标准化
标准化的主要目标不是性能,而是:

  • 避免修改异常
  • 更容易扩展
  • 可读性
  • 更适合各种不同的查询

更多信息:
Wikipedia - Database normalization
How to Deal with SQL Modification Anomalies and Normal Forms

问题 2:插入
有很多方法可以做到这一点,这里是一个:

  • 将电子表格导入表格中,例如 temp_songs
  • 将波段导入 bands
  • 使用FOREIGN KEY创建一个空表songsbands
  • 使用 temp_songs 执行 INSERT INTOongs SELECT ... 查询,并 JOIN 乐队上的 bands 表姓名。这样您就可以获得正确的引用键( MySQL - INSERT ... SELECT Syntax )

问题3:表band
我可以只拥有该 varchar 数据列表并将其用作主键来查找该特定艺术家的歌曲吗?

从技术上讲,您可以将其存储在列中,但如果您想将信息存储在数据库中,最合理的选择是我强烈建议使用单独的表(请参阅问题 1 的答案)。

关于mysql - 将 varchar 值转换为 mysql 中的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29515845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com