2011-03-16 94 views
1

以下是關係數據庫的一部分。我知道如何創建表格電影併爲其分配主鍵......但不要低估創建其他表格併爲其分配主鍵。 有什麼幫助嗎?如何創建這個關係表?

enter image description here

Film

CREATE TABLE Film (
    Id INTEGER PRIMARY KEY, 
    Title VARCHAR(35) NOT NULL, 
    Description VARCHAR(256) NOT NULL, 
    Year INTEGER NOT NULL CHECK (Year > 1900), 
    Rating INTEGER NOT NULL DEFAULT 3 CHECK (Rating BETWEEN 1 AND 5) 
); 

如何創建表FilmFormatOrderItem

+1

由於您的引擎是MyISAM,因此MySQL將忽略CHECK約束和FOREIGN KEY約束。沒有意義定義它們。 FK是從FilmFormat創建到Film的,所以Film表格如圖所示完成。 – RichardTheKiwi 2011-03-16 23:53:00

+0

對不起,我將刪除引擎,然後它如何工作? – homlyn 2011-03-17 00:29:01

+0

CHECK約束仍然會被解析並被忽略。 – RichardTheKiwi 2011-03-17 03:04:31

回答

2
CREATE TABLE `jy` (
    `PKfield` INTEGER UNSIGNED NOT NULL DEFAULT NULL AUTO_INCREMENT, 
    `field2` VARCHAR(45) NOT NULL, 
    PRIMARY KEY (`PKfield`), 
    CONSTRAINT `FK` FOREIGN KEY `FK` (`PKfield`) 
    REFERENCES `Film` (`Id`) 
    ON DELETE RESTRICT 
    ON UPDATE RESTRICT 
) 
ENGINE = InnoDB; 
+0

你能說清楚一點嗎?你可以使用其他表格字段完全相應的名稱? – homlyn 2011-03-17 00:30:45

0

這足以向您展示如何在兩個表之間創建外鍵約束。正如所評論的,CHECK約束將被解析但被忽略。

CREATE TABLE Film (
    Id INTEGER PRIMARY KEY, 
    Title VARCHAR(35) NOT NULL, 
    Description VARCHAR(256) NOT NULL, 
    Year INTEGER NOT NULL CHECK (Year > 1900), 
    Rating INTEGER NOT NULL DEFAULT 3 CHECK (Rating BETWEEN 1 AND 5) 
); 

CREATE TABLE FilmFormat (
    FilmId INTEGER not null, 
    FormatId INTEGER not null, 
    Price decimal(16,4) null, 
    Primary Key(FilmId, FormatId), 
    Constraint FK_FilmFormat_FilmId FOREIGN KEY (FilmId) REFERENCES Film(Id) 
); 

做最後一張桌子只是爲你做你的工作。