我的表格格式如下,其中每一行代表一张纸:

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新手,因此感谢您的反馈!

最佳答案

您正在寻找的想法是一个“外键”。实际上,ID是表上的主键。 CITE1是引用同一表的外键:

alter table papers add constraint fk_papers_cite1
    foreign key (cite1) references papers(id);


我担心您有一列称为CITE1而不是CITE的列。如果论文可以引用其他多篇论文,则表示此问题的正确方法是使用另一个表,例如PaperCitations,该表每篇论文和每篇论文被引用一行。拥有多个称为CITE1CITE2之类的列的方法并非可行。将定界列表存储为字符串是完全错误的。

关于mysql - MySql,同一表中的2列引用相同的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35241178/

10-12 00:53