Как я могу создать составной первичный ключ (id_x, id_y), где порядок уникален? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть матрица сходства между двумя элементами, и я хочу сохранить ее в виде таблицы в реляционной базе данных.Таким образом, я хочу, чтобы таблица имела три поля;идентификатор первого элемента, идентификатор второго элемента и значение их сходства.

Я думаю о том, чтобы сделать два столбца идентификатора составным первичным ключом.Но как я могу гарантировать, что с учетом двух элементов (x, y) составной ключ (id_x, id_y) совпадает с (id_y, id_x), поэтому у меня нет повторяющихся записей?

1 Ответ

0 голосов
/ 24 октября 2018

Предполагая, что ваши id значения используют упорядоченный тип данных, один из самых простых способов добиться этого - принудительно установить ограничение CHECK так, чтобы id_x было меньше id_y. * 1005.*

Это может представлять некоторые трудности, если у вас нет способа применить этот порядок перед созданием записей.Некоторые базы данных допускают вычисления в определениях индекса, и в этом случае вы можете определить свой индекс на (MIN(id_x,id_y),MAX(id_x,id_y)) и пропустить CHECK.(Для чего-то вроде SQL Server вы можете поместить такое вычисление в определение индексированного представления)

...