Могу ли я использовать соединения Natural вместо первичного и внешнего ключей? - PullRequest
0 голосов
/ 25 августа 2010

Если я использую естественные объединения, то для чего нужен первичный ключ и внешний ключ?

Ответы [ 3 ]

4 голосов
/ 25 августа 2010

Первичные ключи и внешние ключи являются типами базы данных ограничение : их целью является обеспечение целостности данных, а не облегчение объединений.

Первичный ключ : для столбцов первичного ключа не должно быть более одной строки с одинаковым значением.

Внешний ключ : каждое значение в столбцах внешнего ключа каждой строки должно соответствовать первичному (или уникальному) ключу строки в ссылочной / родительской таблице.

1 голос
/ 25 августа 2010

Естественные объединения, как правило, плохая идея.Вы можете случайно присоединиться к неправильному полю, и тогда все ваши результаты неверны, но могут показаться правильными.Даже если они будут работать сначала, изменения в базе данных в более позднее время могут кардинально изменить результаты вашего запроса, и их будет сложно определить.Я ни при каких обстоятельствах не использовал бы естественное соединение.

PK и Fks предназначены для обеспечения целостности данных, было бы крайне плохой идеей удалить их независимо от того, используете ли вы естественные объединения или нет.Базы данных без надлежащих PKS и FK почти всегда содержат неверные данные.

1 голос
/ 25 августа 2010

Не совсем уверен, что вы спрашиваете. Объединения делают что-то отличное от PK / FK, и они явно не заменяют друг друга. PK и FK реализуют ограничения для обеспечения правильности данных. Объединения - это тип операции запроса.

...