我正在使用MySQL设计数据库,现在正处于文档化阶段,我必须定义每个列的数据类型。 当谈到每个表本身时,没有问题,但我有1米关系的问题,因为我不知道如何定义外键的数据类型(因为在其原始表中它的类型是“SERIAL” - 因为它是主键)但是当它是FK时我不能将它定义为SERIAL。你能救我吗?
EX: 出版商[ Publisher_ID(SERIAL) | Publisher_Name(Varchar(50))| ..等等]
图书[ Book_ID(SERIAL) | Publisher_ID(?) | Book_Price(十进制(5,2))| ..等等]
感谢
答案 0 :(得分:0)
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 强>