MySql,同一表中的2列引用相同的数据

时间:2016-02-06 12:46:38

标签: mysql

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

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的新手,所以我感谢任何反馈!

1 个答案:

答案 0 :(得分:1)

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

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

我担心你有一个名为CITE1而不是CITE的列。如果论文可以引用多篇其他论文,那么表示这一点的正确方法是使用另一个表格,例如PaperCitations,每张纸有一行,每篇论文被引用。拥有多个名为CITE1CITE2等内容的列不是最佳选择。将分隔列表存储为字符串是完全错误的。