2016-02-06 4 views
0

Моя таблица имеет следующий формат, где каждая строка представляет собой документ:MySql, 2 колонки в одной таблице ссылающихся же данные

ID TITLE  YEAR CITE1 
1  TITLE1 YEAR1 3 
2  TITLE2 YEAR2 1 
3  TITLE3 YEAR3 N 
... 
N  TITLEN  YEARN 2 

Я выбрал ID в качестве основного ключа. Cite1 содержит идентификатор бумаги, который цитирует конкретная бумага. Таким образом, значения в Cite1 являются значениями ID. В будущем я хочу установить связь между бумагой и бумагой, которую он цитирует.

Мой вопрос: правильно ли я имею идентификатор в качестве моего первичного ключа или должен ли я что-то сделать для столбца CITE1, так как он также содержит идентификаторы документов?

Я новичок в mysql, поэтому я ценю любую обратную связь!

+0

Пожалуйста, отправьте фактические запросы, которые вы используете, чтобы выбрать свои данные. –

ответ

1

Идея, которую вы ищете, является «внешним ключом». ID - это, действительно, первичный ключ на столе. CITE1 является внешним ключом, который относится к той же таблице:

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

Я волнуюсь немного, что у вас есть столбец с именем CITE1 вместо CITE. Если в статьях можно привести несколько других документов, то правильный способ представить это с другой таблицей, скажем PaperCitations, которая имеет по одному ряду на бумагу и на каждую бумагу. Наличие нескольких столбцов, называемых такими вещами, как CITE1, CITE2 и т. Д. - это не путь. Сохранение списка с разделителями в виде строки просто неверно.

+0

Это то, что мне было нужно, я не был уверен, могу ли я иметь внешний ключ, ссылающийся на первичный ключ той же таблицы! спасибо –

+0

И жаль, что я полностью понимаю, о чем вы говорите. На самом деле у меня есть отдельная таблица для цитат в моей реальной базе данных, но на данный момент я работаю с очень простой базой данных, содержащей только одну таблицу, и сейчас я работаю, что в бумаге приводится только одна другая статья, поэтому я могу начать взаимодействия между двумя бумагами вместо нескольких. Это мой вопрос, исходящий от этого, и я был бы признателен, если бы у вас были какие-либо советы! (http://stackoverflow.com/questions/35229693/d3-interactions-between-columns-in-database-table) @GordonLinoff –

Смежные вопросы