创建外键时自动增量是否会影响?

时间:2012-05-17 16:11:19

标签: mysql foreign-keys phpmyadmin innodb foreign-key-relationship

我使用InnoDB并且还在学习MYSQL。我试图将歌曲链接到相册。 我的数据库中是否存在导致问题的原因?以下是我的表格。


Albums
•   albumID – int(11)
•   albumpic – varchar(255)
•   albumthpic – varchar(255)
•   albumTitle – varchar(255)
•   performer – varchar(255)
•   type – set (ex: ep, sp, studio)
•   titletrack – varchar(255)
•   genre
•   releasedate – date
•   distributor – varchar(255)
•   page – varchar(255)
Songs
•   songID – int(11)
 albumID - int(11)
•   albumpic – varchar(255)
•   tracknum – int(11)
•   songTitle – varchar(255)
•   performer – varchar(255)
•   album – varchar(255)
•   page – varchar(255)

2 个答案:

答案 0 :(得分:2)

有人假设每首歌曲(可选)属于专辑;在这种情况下,Songs表需要一个外键来引用Albums表中的相关记录。例如,您可以添加albumID列:

ALTER TABLE Songs
  ADD COLUMN albumID int(11) [NOT] NULL,
  ADD INDEX (albumID),
  ADD FOREIGN KEY (albumID) REFERENCES Albums (albumID);

如果单个歌曲可能涉及多个专辑,则需要创建第三个表格,其中包含两个外键 - 一首歌曲及其相关专辑的外键(例如songIDalbumID ):

CREATE TABLE AlbumSongs (
  songID  int(11) NOT NULL,
  albumID int(11) NOT NULL,
  PRIMARY KEY (songID, albumID),
  INDEX (albumID),
  FOREIGN KEY (songID)  REFERENCES Songs  (songID),
  FOREIGN KEY (albumID) REFERENCES Albums (albumID)
);

答案 1 :(得分:1)

不确定您在寻找什么,但如果您正在寻找如何创建foriegn密钥并链接到主表的PK,那么您可以这样做:

create table Songs
(songID int(11) int not null auto_increment primary key,
albumpic varchar(255),
tracknum int(11),
songTitle varchar(255), 
performer varchar(255),
album varchar(255),
page varchar(255),
albumID int(11),
foreign key (albumID) references Albums (albumID) on delete cascade)