2013-03-24 38 views
0

我正在設計一個使用MySQL的數據庫,現在處於記錄階段,我必須定義每一列的數據類型。當它涉及到每個表時,沒有問題,但是我有1-m關係的問題,因爲我不知道如何定義外鍵的數據類型(因爲在其原始表中它的類型是「SERIAL 「 - 因爲它的主鍵)但是我不能將它定義爲SERIAL當它是FK。你可以幫我嗎 ?爲外鍵定義(列類型)

EX: PUBLISHERS [Publisher_ID(SERIAL) | Publisher_Name(Varchar(50))| ..等]

Books [Book_ID(SERIAL) | Publisher_ID(?) | Book_Price(小數(5,2))| ..等]

感謝

+0

您也可以定義爲PUBLISHER_ID INT使用 BIGINT UNSIGNED? – 2013-03-24 04:56:51

+0

我希望爲每個添加到數據庫的發佈者自動生成它。 將其定義爲INT時,給予用戶自己添加唯一編號的功能。 :) – abulzooz 2013-03-24 04:59:12

+0

沒有用戶不能自己輸入唯一編號,因爲如果你設置自動增量和主鍵。其自動添加id自動增量。 – 2013-03-24 05:01:50

回答

0

在MySQL SERIAL只是爲BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的別名。因此定義FK列時,這樣

CREATE TABLE publishers(
publisher_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, 
publisher_name VARCHAR(50), 
PRIMARY KEY(publisher_id) 
); 

CREATE TABLE books(
book_id INT NOT NULL AUTO_INCREMENT, 
publisher_id BIGINT UNSIGNED, 
title VARCHAR(100), 
book_price DECIMAL(5,2), 
PRIMARY KEY (book_id), 
CONSTRAINT FOREIGN KEY (publisher_id) REFERENCES publishers (publisher_id) 
); 

SQLFiddle example

+0

非常感謝:) :) – abulzooz 2013-03-24 05:21:22

+0

非常歡迎:D – peterm 2013-03-24 05:32:13