2013-03-24 2 views
0

Я проектирую базу данных с использованием MySQL, прямо сейчас на этапе документирования, в котором я должен определить тип данных каждого столбца. , когда речь заходит о каждой таблице сама по себе, нет проблем, но у меня проблема с 1-м отношениями, потому что я не знаю, как определить тип данных внешнего ключа (потому что в исходной таблице его тип «SERIAL» «- coz его основной ключ), но я не могу определить его как SERIAL, когда это FK. Можешь мне помочь ?Определение (тип столбца) для внешних ключей

EX: ИЗДАТЕЛЬСТВА [Publisher_ID (SERIAL) | Publisher_Name (Varchar (50)) | .. и т. д.]

Books [Book_ID (SERIAL) | Publisher_ID (?) | Book_Price (десятичный (5,2)) | .. и т.д.]

благодаря

+0

Вы можете также определить, как publisher_id межд? –

+0

Я хочу, чтобы он автоматически генерировался для каждого издателя, добавленного в базу данных. в случае определения его как INT, я даю пользователю возможность добавить уникальный номер самостоятельно. :) – abulzooz

+0

пользователь не может ввести уникальный номер сам, потому что если вы установите его автоинкремент и первичный ключ. автоматически добавляет автоинкремент id. –

ответ

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 example

+0

спасибо alot ... :) – abulzooz

+0

Вы очень желанны: D – peterm

Смежные вопросы