mysql - 如何使用 phpMyAdmin 和外键制作音乐库?

标签 mysql sql phpmyadmin

在遵循 Music library MySQL database 遇到困难后,我需要帮助尝试设置外键.我有多个表:专辑、歌曲、流派、音乐视频、独奏和组。每个特定表都有 ID、名称和其他列。每个 id 都是 int(11) 的主键。 Solo 和 Group 代表独奏艺术家和团体。 (soloID和groupID是他们的主键)

再看

这可能是我设置数据库的方式。


Solo
•   djuIDs – int(11)
•   profilepic – varchar(255)
•   engname – varchar(255)
•   korname – varchar(255)
•   engbn – varchar(255)
•   occupation – set
•   recordlabel – varchar(255)
•   debut  - date
•   dateofbirth – date
•   officialsite -  varchar(255)
•   sitename –varchar(255)
•   page – varchar(255)
Group
•   djuIDs – int(11)
•   profilepic – varchar(255)
•   engname – text
•   korname – text
•   members – text
•   recordlabel – varchar(255)
•   debut – date
•   officialsite -  varchar(255)
•   sitename –varchar(255)
•   page – varchar(255)
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)
•   albumpic – varchar(255)
•   tracknum – int(11)
•   songTitle – varchar(255)
•   performer – varchar(255)
•   album – varchar(255)
•   page – varchar(255)
Music Videos
•   mvID – int(11)
•   title – varchar(30)
•   mvpic – varchar(255)
•   performer – varchar(255)
•   album – varchar(255)
•   releasedate – date
•   vURL – varchar(255)
Genres
•   genreID – int(11)
•   genreName –varchar(30)
•   information – varchar(255)

最佳答案

我认为这是我以前的回答之一...如果您使用 INT(11) 作为您的主键,您的外键定义应该类似于下表定义艺术家专辑:

CREATE TABLE Artists (
  /* will later be defined as a FK Albums.artistid */
  id INT NOT NULL PRIMARY KEY,
  name VARCHAR(1024) NOT NULL,
  description TEXT
) ENGINE=InnoDB;

CREATE TABLE Albums (
  id INT NOT NULL PRIMARY KEY,
  artistid INT NOT NULL,
  release_date DATETIME,
  genreid INT NOT NULL,
  picture BLOB,
  FOREIGN KEY (artistid) REFERENCES Artists (id),
  FOREIGN KEY (genreid) REFERENCES Genres (id)
)  ENGINE=InnoDB;

由于您已将所有 PK 列定义为 INT(11),因此请确保在相关表中使用相同的数据类型。例如上面的例子,artistid INT NOT NULL 假定 Artists 中引用的列被定义为 id INT NOT NULL

在上面的定义中,我将 FK 列设置为 NOT NULL,但这并不是绝对必要的。例如,您可以拥有一张包含 NULL 艺术家的专辑。如果您认为这是可能的,您应该能够在列定义中省略 NOT NULL

关于mysql - 如何使用 phpMyAdmin 和外键制作音乐库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10592972/

相关文章:

php - 如何在 Yii2 中使用 kartik-Select2 小部件项目将所选项目保存到数据库?

c# - Windows 上的 MySQL 在连接尝试时崩溃

c# - 编程夜间数据传输的最佳方式,身份列高

mysql - 从mysql中选择特定格式的日期

php - 在mysql中导入数据时自动插入列

php - php/mysql 日期减去 1 年

php - Mysql哪里喜欢还是喜欢

MySQL 错误 : Specified key was too long; max key length is 1000 bytes

php - mysql全连接查询

mysql - <=>运算符是什么意思,sql?