我正在 Mysql Workbench 上创建一个 DBSM,但是当 Itry 创建最后一个表时,我收到一个错误,因为它无法添加外键,但我不明白为什么,因为子键具有相同的数据类型和排序规则父键和名称不重复。
这是两个表的代码:
CREATE TABLE PRESTITO(
MATRICOLA_U INT,
CODICE_LIB SMALLINT(4),
DATA_P DATE,
DATA_R DATE,
N_DIP SMALLINT(2),
PRIMARY KEY(CODICE_LIB),
FOREIGN KEY(MATRICOLA_U) REFERENCES UTENTI(MATRICOLA),
FOREIGN KEY(CODICE_LIB) REFERENCES LIBRI(CODICE_L)
);
CREATE TABLE DIPARTIMENTO(
NUMERO_DIP SMALLINT(2),
NOME_DIP VARCHAR(50) NOT NULL,
INDIRIZZO_DIP VARCHAR(50),
PRIMARY KEY(NUMERO_DIP),
FOREIGN KEY (NUMERO_DIP) REFERENCES PRESTITO(N_DIP)
);
有人可以帮忙吗?非常感谢!
我怀疑您的外键关系方向错误。如果
dipartament.numero_dip
是主键,那么您应该从 引用它prestito
,而不是相反:在您的情况下,Eversy 引用的列 N_DIP 必须被索引,我将其添加为
KEY(N_DIP)
. PRiMARY KEY 当然是有索引的,所以只要你坚持使用它们就没有问题。使用您也可以使用的组合键,您需要表中的列数与组合键中的列数相同