【问题标题】:How to make a music library using phpMyAdmin and Foreign Keys?如何使用 phpMyAdmin 和外键制作音乐库?
【发布时间】:2019-01-04 17:52:21
【问题描述】:

在难以关注Music library MySQL database 之后,我需要帮助尝试设置外键。我有多个表:专辑、歌曲、流派、音乐视频、独奏和组。每个特定表都有 ids、names 和其他列。每个 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)

【问题讨论】:

  • 你学习过这个教程吗:w3schools.com/sql ?如果您没有 SQL 经验并且愿意使用 MySQL,我强烈建议(它既简单又有趣!)这样做。

标签: mysql sql phpmyadmin


【解决方案1】:

我认为这是我较早的答案之一...如果您使用 INT(11) 作为主键,您的外键定义应该类似于下表中的 Artists 和 Albums 定义:

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。

【讨论】:

  • @taeja87 创建F​​K时,会自动添加索引。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
  • 2011-07-25
  • 2015-11-28
  • 2011-06-15
  • 2016-04-13
相关资源
最近更新 更多