Mysql SQL:向两个现有(已填充)表添加外键关系
我有两个表:一个表是Mysql SQL:向两个现有(已填充)表添加外键关系,mysql,foreign-keys,foreign-key-relationship,Mysql,Foreign Keys,Foreign Key Relationship,我有两个表:一个表是albums表,其中包含专辑名称、作者和流派(以及插入时间戳)。另一个是曲目表,其中包含相册中每个曲目的信息(以及插入时间戳) 今天我意识到我的表中有很多数据是双重的:在tracks表中,我还存储相册和作者姓名,而从另一个表中选择相册和作者姓名会更好,只使用ID引用它们 我知道我可以唯一地识别每个曲目所属的唱片集,因为它有: 相同的专辑名 间隔不超过几秒钟的时间戳 有没有一种方法可以让我创建一个只引用SQL中的相册id的列,或者我需要用PHP编写一个程序来完成这项工作?你
albums
表,其中包含专辑名称、作者和流派(以及插入时间戳)。另一个是曲目
表,其中包含相册中每个曲目的信息(以及插入时间戳)
今天我意识到我的表中有很多数据是双重的:在tracks
表中,我还存储相册和作者姓名,而从另一个表中选择相册和作者姓名会更好,只使用ID引用它们
我知道我可以唯一地识别每个曲目所属的唱片集,因为它有:
- 相同的专辑名
- 间隔不超过几秒钟的时间戳
有没有一种方法可以让我创建一个只引用SQL中的相册id的列,或者我需要用PHP编写一个程序来完成这项工作?你可以用SQL来完成
- 将唱片集id添加到曲目表(开始时必须为空)
- 添加外键
- 基于某些常用属性(如唱片集名称)更新曲目表
- 使外键不可为空,可选步骤
如果尚未添加album_ID列,我建议使用以下命令: 要添加相册ID,请执行以下操作:
ALTER TABLE albums ADD album_ID VARCHAR(10);
ALTER TABLE tracks ADD album_ID VARCHAR(10);
要添加外键,请执行以下操作:
ALTER TABLE tracks ADD FOREIGN KEY (album_ID) REFERENCES albums(album_ID);
要删除相册名和作者名,请执行以下操作:
ALTER TABLE tracks DROP COLUMN album_name;
ALTER TABLE tracks DROP COLUMN author_name;
然后在两个表中填充相册ID 你在回答中遗漏了很多步骤,这可能会让他头疼。
ALTER TABLE tracks DROP COLUMN album_name;
ALTER TABLE tracks DROP COLUMN author_name;