为外键定义(列类型)

时间:2013-03-24 04:55:13

标签: mysql database-design

我正在使用MySQL设计数据库,现在正处于文档化阶段,我必须定义每个列的数据类型。 当谈到每个表本身时,没有问题,但我有1米关系的问题,因为我不知道如何定义外键的数据类型(因为在其原始表中它的类型是“SERIAL” - 因为它是主键)但是当它是FK时我不能将它定义为SERIAL。你能救我吗?

EX: 出版商[ Publisher_ID(SERIAL) | Publisher_Name(Varchar(50))| ..等等]

图书[ Book_ID(SERIAL) | Publisher_ID(?) | Book_Price(十进制(5,2))| ..等等]

感谢

1 个答案:

答案 0 :(得分:0)

MySql中的

SERIAL只是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE的别名。因此使用 定义FK列时BIGINT UNSIGNED,如此

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