▲GN⁺ 2025-01-11 | parent | ★ favorite | on: SQL의 NULL은 이상함(jirevwe.github.io)Hacker News 의견 SQL의 NULL은 Kleene의 TRUE-FALSE-UNKNOWN 논리에 기반을 두고 있음. NULL을 UNKNOWN으로 읽으면 여러 연산이 더 직관적으로 이해됨 TRUE OR UNKNOWN = TRUE, TRUE AND UNKNOWN = UNKNOWN, UNKNOWN XOR UNKNOWN = UNKNOWN 등 NULL은 UNKNOWN을 나타내는 자리 표시자이며, 두 NULL이 같다고 할 수 없음 Postgresql 15부터는 NULLS NOT DISTINCT를 사용하여 고유 인덱스를 생성할 수 있음 1970년대에 NULL 개념이 도입되었을 때, 미래에 많은 혼란을 초래할 것이라고 생각했음. 45년이 지난 지금도 여전히 논의 중임 NULL의 직관적인 이해: 특정 테이블 셀의 NULL 값은 '값 없음'을 나타내는 방법임. 고유한 값을 원할 때, 값이 없는 경우는 고려하지 않아야 함 ORM 사용에 대한 회의론: ORM은 편리하지만, 관계형 데이터베이스의 실제 작동 방식을 배우지 못한 세대가 생겨났음. SQL NULL의 동작은 기본 관계 대수와 일치하며, C 스타일의 NULL이 문제임 Blackadder 에피소드의 대화에서 NULL 비교의 유머를 상기함 Oracle에서 NULL이 빈 문자열과 같다는 점이 이상하다고 생각함 객체 지향 컨텍스트에서 "null"은 특정 속성에 값이 없음을 나타내는 데 유용함. JavaScript에서는 null과 undefined가 있어, undefined는 값을 모르는 것이고 null은 값이 없음을 의미한다고 가정할 수 있음 NULL은 중복이 없다는 의미에서 이상하지 않음. NULL이 서로 같지 않기 때문에 중복이 될 수 없음. NULL 의미론이 마음에 들지 않으면 센티널 값을 사용할 수 있음 SQL NULL은 존재하지 않는 값이 있는 레코드에서 관계형 논리가 어떻게 작동하기를 원하는지를 고려하면 이상하지 않음
Hacker News 의견
SQL의 NULL은 Kleene의 TRUE-FALSE-UNKNOWN 논리에 기반을 두고 있음. NULL을 UNKNOWN으로 읽으면 여러 연산이 더 직관적으로 이해됨
NULLS NOT DISTINCT를 사용하여 고유 인덱스를 생성할 수 있음1970년대에 NULL 개념이 도입되었을 때, 미래에 많은 혼란을 초래할 것이라고 생각했음. 45년이 지난 지금도 여전히 논의 중임
NULL의 직관적인 이해: 특정 테이블 셀의 NULL 값은 '값 없음'을 나타내는 방법임. 고유한 값을 원할 때, 값이 없는 경우는 고려하지 않아야 함
ORM 사용에 대한 회의론: ORM은 편리하지만, 관계형 데이터베이스의 실제 작동 방식을 배우지 못한 세대가 생겨났음. SQL NULL의 동작은 기본 관계 대수와 일치하며, C 스타일의 NULL이 문제임
Blackadder 에피소드의 대화에서 NULL 비교의 유머를 상기함
Oracle에서 NULL이 빈 문자열과 같다는 점이 이상하다고 생각함
객체 지향 컨텍스트에서 "null"은 특정 속성에 값이 없음을 나타내는 데 유용함. JavaScript에서는 null과 undefined가 있어, undefined는 값을 모르는 것이고 null은 값이 없음을 의미한다고 가정할 수 있음
NULL은 중복이 없다는 의미에서 이상하지 않음. NULL이 서로 같지 않기 때문에 중복이 될 수 없음. NULL 의미론이 마음에 들지 않으면 센티널 값을 사용할 수 있음
SQL NULL은 존재하지 않는 값이 있는 레코드에서 관계형 논리가 어떻게 작동하기를 원하는지를 고려하면 이상하지 않음