자료가 아직 다 들어오지 않았을 때 0을 적으면 ‘확인 결과 비해당’과 ‘아직 모름’이 섞입니다. 조지 불(George Boole)의 계산은 부류에 속함과 속하지 않음을 1과 0으로 다룹니다. 이번에는 미확인 칸을 억지로 어느 쪽에 넣지 않고, 가능한 0·1 완성을 모두 계산해 결과가 이미 정해졌는지 확인합니다.
01 · 불이 풀려던 문제
기호 계산이 말하는 범위는 어디까지일까요?
불은 1848년과 1854년 저술에서 논의 중인 전체를 1로 두고, x에 속하지 않는 나머지를 1−x로 나타냈습니다. x의 두 경우를 나누어 함수를 전개하면 어떤 입력 조합이 결과 부류에 들어가는지 계산할 수 있습니다. 이 계산은 각 입력이 해당 또는 비해당으로 정해졌다는 전제에서 선명하게 작동합니다.
가상의 자료 검토에서 x는 신청서 확인, y는 교육 이수, z는 보호 장비 확인이라고 하겠습니다. ‘확인 중’은 x=0이 아닙니다. 기록을 아직 판단하지 못한 상태입니다. 이때 질문은 “미확인을 어떤 세 번째 진릿값으로 계산할까?”보다 “남아 있는 0·1 완성마다 출력이 어떻게 되는가?”입니다.
불의 두 값 부류 계산이 각 완성의 결과를 구합니다. 미확인 값을 가능한 완성으로 나누어 비교하는 절차는 현대적 검토 방법입니다. 불이 SQL의 NULL이나 특정 삼값 논리를 제안했다고 해석하지 않습니다.
02 · 불의 제안과 적용 범위
각 완성에서는 0·1로 계산하고, 가능한 조합의 결과를 모읍니다
규칙 F=x(y+z)를 살펴보겠습니다. 불 대수에서 xy는 두 조건의 공통 부분이고, 이 활동의 y+z는 y 또는 z가 해당하는 부분을 뜻합니다. x=0이면 y와 z를 아직 몰라도 모든 완성에서 F=0입니다. x=1, y=1이면 z가 미확인이어도 모든 완성에서 F=1입니다.
반면 x=1, y=0, z가 미확인이면 z=0 완성에서 F=0이고 z=1 완성에서 F=1입니다. 두 결과가 모두 가능하므로 지금은 보류합니다. 미확인을 0으로 바꾸었다면 이 차이를 놓쳤을 것입니다.
이 절차는 불 논리의 두 값 계산을 그대로 유지합니다. 각 완성 안에서는 모든 입력이 0 또는 1이고, 완성들 사이에서 출력이 같은지 별도로 비교합니다. 따라서 미확인을 새로운 숫자로 더하거나 곱하지 않습니다.
03 · 불의 식을 가능한 완성으로
미확인 칸을 남기고 모든 완성의 출력을 비교하세요
| 완성 | x | y | z | F |
|---|
처음 상태는 x=1, y=0, z=확인 중이고 규칙은 x(y+z)입니다. 두 완성 100과 101의 출력이 0과 1로 갈려 보류됩니다. ‘이미 0 확정’에서는 x=0이라 나머지 네 완성이 모두 0이고, ‘이미 1 확정’에서는 x=1, y=1이라 두 완성이 모두 1입니다.
04 · 표에서 얻은 발견
입력이 덜 정해져도 출력은 먼저 확정될 수 있습니다
확정에는 입력 전체의 완료가 꼭 필요하지 않습니다. 어떤 미확인 값을 0과 1로 바꾸어도 출력이 같다면 그 출력은 지금 확정할 수 있습니다. AND 규칙에서 하나의 입력이 0이면 나머지를 기다리지 않고 0을 확정하고, OR 규칙에서 하나가 1이면 1을 확정합니다.
완성 수는 미확인 입력이 하나면 2개, 둘이면 4개, 셋이면 8개입니다. 이것은 가능한 값 조합의 수입니다. 사람 수나 실제 발생 비율, 확률을 뜻하지 않습니다. 모든 완성을 같은 가능성으로 본다는 확률 가정도 들어 있지 않습니다.
“확인 중이라 판단 불가”라고 넓게 쓰기보다 “현재 가능한 네 완성의 출력은 모두 0이므로 결과 0은 확정된다” 또는 “두 완성에서 0과 1이 모두 나와 z 확인까지 보류한다”라고 적습니다.
05 · 오늘의 실제 적용
신청 명단·권한 검사·데이터베이스에서 성급한 0을 막습니다
신청 명단에서 교육 이수 정보가 아직 도착하지 않았다면 ‘미이수’와 구별해 저장해야 합니다. 가능한 완성 모두에서 탈락이면 즉시 안내할 수 있고, 결과가 갈리면 해당 자료만 추가 확인합니다. 권한 규칙이나 품질 검사에서도 어느 미확인 항목이 실제 결정을 바꿀 수 있는지 좁힐 수 있습니다.
SQL은 NULL을 알 수 없는 값으로 다루며, 보통 비교 결과도 참이나 거짓 대신 unknown이 될 수 있습니다. PostgreSQL 공식 문서는 NULL을 일반 값과 구별하여 IS NULL, IS UNKNOWN 같은 검사를 사용하라고 설명합니다. 이 회차에서는 미확인 값에 0과 1을 각각 넣어 결과가 달라지는지 분석합니다. SQL의 연산 규칙과는 별도로 살펴보는 방법입니다.
① 0·1·미확인의 뜻을 구분합니다. ② 미확인 입력의 모든 0·1 완성을 만듭니다. ③ 각 완성에 같은 불 대수 규칙을 적용합니다. ④ 출력 집합이 {0} 또는 {1}이면 확정하고, {0,1}이면 결정을 바꾸는 입력을 추가 확인합니다.
06 · 바르게 쓰는 기준
미확인은 0도, 일정한 확률도 아닙니다
0은 확인된 비해당입니다. 값이 비어 있다는 이유만으로 0을 넣으면 실제 완성 일부가 사라집니다. 반대로 가능한 완성을 나열했다고 해서 각 완성의 확률이 같아지지는 않습니다. 확률을 말하려면 별도의 빈도 자료나 확률 모형이 필요합니다.
규칙이 사용하는 입력 범위도 밝혀야 합니다. 이 실험은 세 입력이 최종적으로 0 또는 1 중 하나로 정해지는 경우를 다룹니다. 실제 상태가 세 종류 이상이라면 그 의미를 따로 모델링해야 합니다.
가능한 완성 검사는 자료 수집을 대신하지 않습니다. 출력이 갈리는 경우에는 어느 입력이 결정을 바꾸는지 표에서 찾고, 그 항목을 우선 확인해야 합니다. 모든 완성의 출력이 같을 때도 원자료의 미확인 표시는 그대로 보존합니다.
불의 문제: 해당·비해당 부류를 기호로 계산하기. 불의 제안: 0·1 경우로 함수를 전개해 각 조합의 결과를 구하기. 오늘의 쓰임: 미확인 입력의 가능한 완성들을 비교해 지금 확정할 결과와 추가 확인할 항목을 나누기.
07 · 자료와 출처
불의 원전과 미확인 값의 공식 자료
- 조지 불, 「The Calculus of Logic」(1848) — 0·1 경우에 따른 함수 전개.
- 조지 불, 『An Investigation of the Laws of Thought』(1854), 제2장 — 전체 1, 보충 부류 1−x, 부류 기호의 법칙.
- PostgreSQL 공식 문서, Comparison Functions and Operators — NULL과 unknown, IS NULL·IS UNKNOWN의 구별.
- 조지 불 초상 판화 · Wikimedia Commons — 1865년 1월 21일 게재, 공개 영역.
