2015-09-01 2 views
0

Я не могу получить внешний ключ GenreID в таблице Album для работы. Кто-нибудь знает, почему?SQL-ссылка внешнего ключа

CREATE TABLE ArtistBand 
(
    ArtistID INT AUTO_INCREMENT PRIMARY KEY, 
    BandName VARCHAR(255) NOT NULL, 
    NameOfMembers VARCHAR(255), 
    NumberOfMembers INT 
); 

CREATE TABLE Genre 
(
    GenreID INT AUTO_INCREMENT PRIMARY KEY, 
    GenreType VARCHAR(255) NOT NULL, 
    AlbumID INT, 
    FOREIGN KEY(AlbumID) REFERENCES Album(AlbumID) 
); 

CREATE TABLE Album 
(
    AlbumID INT AUTO_INCREMENT PRIMARY KEY, 
    Name VARCHAR (255) NOT NULL, 
    ReleaseDate DATE NOT NULL, 
    Producers VARCHAR (255), 
    ArtistID INT, 
    GenreID INT, 

    FOREIGN KEY(ArtistID) REFERENCES ArtistBand(ArtistID), 
    FOREIGN KEY (GenreID) REFERENCES Genre (GenreID) 
); 
+2

Можете ли вы поделиться вывод ошибок с нами? –

+0

Может быть, сначала создайте таблицы, а затем измените таблицу, чтобы добавить внешние ключи. –

+2

Круговые ссылки на внешние ключи между 'Album' и' Genre' вызовут у вас некоторые проблемы. 'AlbumID' не имеет смысла в« Жанре ». Отношение * из * 'Album' будет делать трюк, если вы действительно не ожидаете только одного« альбома »в каждом« Жанре » –

ответ

1

Избавиться от круговой ссылки внешнего ключа между Genre и Album. Логично, что ссылка от Genre до Album не имеет никакого смысла :).

CREATE TABLE ArtistBand (
ArtistID INT AUTO_INCREMENT PRIMARY KEY, 
BandName VARCHAR(255) NOT NULL, 
NameOfMembers VARCHAR(255), 
NumberOfMembers INT 
); 

CREATE TABLE Genre(
GenreID INT AUTO_INCREMENT PRIMARY KEY, 
GenreType VARCHAR(255) NOT NULL 
); 

CREATE TABLE Album (
AlbumID INT AUTO_INCREMENT PRIMARY KEY, 
Name VARCHAR (255) NOT NULL, 
ReleaseDate DATE NOT NULL, 
Producers VARCHAR (255), 
ArtistID INT, 
GenreID INT, 
FOREIGN KEY(ArtistID) REFERENCES ArtistBand(ArtistID), 
FOREIGN KEY (GenreID) REFERENCES Genre (GenreID) 
); 
+0

@ Аарон решила вашу проблему. Если да, то примите ответ :) –

+0

Спасибо, кучи! это сработало, я знаю, что это не пиратский бит кода, просто проект, который мы должны были сделать для школы –

0

если использовать SQL Server: auto_increment быть модифицирован для идентичности

CREATE TABLE ArtistBand (
ArtistID INT identity(1,1) PRIMARY KEY, 
BandName VARCHAR(255) NOT NULL, 
NameOfMembers VARCHAR(255), 
NumberOfMembers INT 
); 

CREATE TABLE Genre(
GenreID INT identity(1,1) PRIMARY KEY, 
GenreType VARCHAR(255) NOT NULL 
); 

CREATE TABLE Album (
AlbumID INT identity(1,1) PRIMARY KEY, 
Name VARCHAR (255) NOT NULL, 
ReleaseDate DATE NOT NULL, 
Producers VARCHAR (255), 
ArtistID INT, 
GenreID INT, 
FOREIGN KEY(ArtistID) REFERENCES ArtistBand(ArtistID), 
FOREIGN KEY (GenreID) REFERENCES Genre (GenreID) 
); 
Смежные вопросы