我的表格格式如下,每行代表一张纸:
ID TITLE YEAR CITE1
1 TITLE1 YEAR1 3
2 TITLE2 YEAR2 1
3 TITLE3 YEAR3 N
...
N TITLEN YEARN 2
我选择了ID作为我的主键。 Cite1包含特定纸张引用的纸张的ID。所以Cite1中的值基本上就是ID。在将来,我想在一篇论文和它所引用的论文之间建立联系。
我的问题是,我是否正确将ID作为我的主键,或者我应该对CITE1列执行某些操作,因为它还包含文件ID?
我是mysql的新手,所以我感谢任何反馈!
答案 0 :(得分:1)
您正在寻找的想法是“外键”。确实,ID
是桌面上的主要关键。 CITE1
是引用同一个表的外键:
alter table papers add constraint fk_papers_cite1
foreign key (cite1) references papers(id);
我担心你有一个名为CITE1
而不是CITE
的列。如果论文可以引用多篇其他论文,那么表示这一点的正确方法是使用另一个表格,例如PaperCitations
,每张纸有一行,每篇论文被引用。拥有多个名为CITE1
,CITE2
等内容的列不是最佳选择。将分隔列表存储为字符串是完全错误的。