0

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

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

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

谢谢

4

1 回答 1

0

SERIAL在 MySql 中只是BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE. 因此 BIGINT UNSIGNED在定义 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 示例

于 2013-03-24T05:05:26.420 回答