2014-09-28 3 views
0

Я новичок в этом, но возможно ли (в workbench MySQL) создать атрибут, который является набором, зависящим от атрибута из другой таблицы?MySQL создать таблицу с атрибутом set из другой таблицы?

CREATE TABLE danes (
    id INT PRIMARY KEY, 
    name VARCHAR(50), 
    nationality VARCHAR(20), 
    gender CHAR(1), 
    degree SET ?????????????????? from degree(level) 
); 

CREATE TABLE degree (
    level VARCHAR(10), 
    subject VARCHAR(20), 
    institutionawarding VARCHAR(20), 
    yearawarded DATE, 
    PRIMARY KEY (level, subject) 
); 

никогда не возражаете, я получил его

+0

вы говорите о [внешнем ключе] (http://dev.mysql.com/doc/refman/5.6/en/create-table -foreign-keys.html)? – Mureinik

+0

Я не уверен, чего вы пытаетесь достичь. Какой уровень степени должен проявляться на отдельных «датчанах», когда между ними нет связи? Или вы спрашиваете, как связать их? –

+0

+1 к ответу @ GordonLinoff, но причина, по которой это не работает, заключается в том, что для определения определения SET потребуются новые значения в 'degree.level'. Что происходит, когда имеется более 64 различных значений 'level'? (Тип данных MySQL SET ограничен до 64 элементов.) –

ответ

2

Я предполагаю, что вы хотите еще одну таблицу, таблицу перехода:

CREATE TABLE DaneDegrees (
    DanesId INT REFERENCES danes(id), 
    Level VARCHAR(10), 
    Subject VARCHAR(20), 
    FOREIGN KEY fk_level_subject(level, subject) REFERENCES Degree(level, Subject) 
); 

Я бы, однако, в обоих Danes и Degrees в INT AUTO_INCREMENT PRIMARY KEY.

+0

нет только атрибута – Bjartastavonin

0

, по-видимому, вы не можете просто сказать

< attribute_name> набор (получить набор из другого табе)

набор вещь не работает таким образом

Eventhough вы можете обновить его, по-видимому, так это фактически может

обновление table_name

атрибут = (выберите * из другого table_name)