[sqlite] numeric과 affinity

sqlite로 이용하는 대이터 타입은 null, integer, real, text, blob이다. numeric은 포함되지 않는다. 하지만 타입을 설정할 때 numeric으로 할 수 있다. numeric으로 설정을 하면 이 필드에는 아무거나 넣어도 된다. 그러면 sqlite가 알아서 적당한 거로 바꾼다. numeric 타입으로 저장하는 게 아니다. 이런 처리를 type affinity라 한다.

In order to maximize compatibility between SQLite and other database engines, and so that the example above will work on SQLite as it does on other SQL database engines, SQLite supports the concept of “type affinity” on columns.

다른 대이터배이스 엔진들과의 호환성을 목적으로 한다고 설명하지만 실무에서는 타입을 특정할 수 없는 필드에 주로 쓰인다. 예를 들면 문자도 넣고 숫자도 들어가고 하는 대이터다. 많이 쓰이지는 않는다.

affinity는 어려운 단어다. 보통 번역할 때에는 친밀감이나 유사성으로 쓴다. 형용사는 affine이다. 인척이라는 뜻이다. 피는 섞이지 않았지만 친척인 관계 즉 결혼으로 맺어진 관계다. 혈족처럼 아주 가까운 건 아닌데 그렇다고 멀다고 할 수도 없는 공동체를 의미한다.