ПК-кандидат должен быть инъективной, сюръективной или биективной функцией?
У меня есть сомнения относительно информационной силы кандидата на роль ПК.
Насколько я понимаю, и это то, чем я хочу поделиться, чтобы проверить, правильно ли это, кандидат в ПК должен быть достаточно сильным, чтобы однозначно идентифицировать набор информации, верно?
Я начал смотреть на этот вопрос с математическим подходом.
Если я определю кодомен как набор, сгенерированный моей SEQUENCE, а мой домен как набор данных, которые будут идентифицироваться PK, то будет правильно утверждать, что мой кандидат PK должен быть, по крайней мере, Injective Function.
Почему хотя бы Injective? Потому что я могу "сжечь" некоторые элементы моей последовательности, то есть мой Codomain, поэтому я не могу убедиться, что у меня есть Injection и Surjection.
Мои предположения и понимание правы?
1 ответ
Вы определенно на правильном пути, думая об этом, используя теорию множеств.
Вы можете определить свой домен в качестве набора, сгенерированного вашей SEQUENCE, включая "записанные" значения, но вы должны определить свой ключ как диапазон, содержащий только те значения, которые фактически выбраны и сопоставлены с кортежами. Таким образом, любой ключ является биективным с набором кортежей.