본문으로 건너뛰기
← Journal
화학 R&D / 데이터 엔지니어링

작성: COZYGONO 개발·편집팀 · 수정:

CAS 번호를 넣었는데 왜 안 나올까: 공개 화학 DB의 compound와 substance

MSDS 초안 계산기에 실리콘 오일 CAS를 넣었더니 "찾을 수 없음"이 떴습니다. 번호가 틀린 것이 아니라, 공개 화학 데이터베이스가 물질을 담아 두는 층이 두 개였기 때문입니다.

VISUAL NOTE 02 · PUBCHEM DUAL LAYER ARCHITECTURECompound (CID) vs Substance (SID) Fallback
비교 항목Compound 계층 (CID)Substance 계층 (SID)
대상 물질단일 화학 구조가 확정된 순물질 (예: 에탄올 64-17-5)폴리머, UVCB, 천연 정유, 석유 유분 (예: 실리콘 오일 63148-62-9)
실리콘 오일 조회 결과0건 (단독 조회 시 "물질 없음" 오류)184건 (기관·공급사 원본 등록 레코드)
제공 데이터분자식, 인화점·비점, GHS H-코드, LD50/LC50등록 별칭(Synonyms) 목록 위주 · 통합 물성/GHS 없음
도구의 처리 원칙물성·GHS·독성치 자동 채움 + 원출처 표시최빈 물질명 추출(내부 코드 제거) + "원료 SDS 직접 입력" 안내
별칭 정제 예시 (CAS 63148-62-9 · 184개 SID 레코드): Poly(dimethylsiloxane) (16회, 채택) · Silicone oil (11회) · MFCD00148360 (10회, 등록번호 제외)

개발 노트에서 한 대목만 옮깁니다. 웹 MSDS 도구를 만들며 실제로 막혔던 지점입니다.

1. 멀쩡한 CAS가 "없는 물질"이 되던 날

도구는 CAS 번호를 받아 공개 화학정보 데이터베이스(PubChem)에서 물성과 GHS 분류를 가져옵니다. 에탄올(64-17-5), 톨루엔(108-88-3) 같은 물질은 잘 나왔습니다. 그런데 현장 배합표에서 흔히 쓰는 원료를 넣자 결과가 비었습니다.

  • 63148-62-9 (실리콘 오일)
  • 8000-28-0 (라벤더 오일)
  • 64742-47-8 (수소첨가 등유)
  • 68439-46-3 (알코올 에톡실레이트)

번호는 모두 정확했습니다. 체크섬 검증도 통과했습니다.

2. 두 개의 층

확인해 보니 데이터베이스는 물질을 두 층으로 나누어 보관하고 있었습니다.

  • compound: 분자 구조가 하나로 정의되는 순물질. 에탄올처럼 구조식을 그릴 수 있는 것.
  • substance: 기관과 공급사가 등록한 원본 레코드. 구조가 하나로 정해지지 않아도 들어갑니다.

폴리머, UVCB(조성이 가변적인 물질), 천연 추출물, 석유 유분은 분자 구조가 하나로 확정되지 않습니다. 이때 compound 검색만으로는 필요한 원료 레코드를 찾지 못할 수 있어 substance 조회도 필요합니다. 실리콘 오일을 조회해 보니 compound는 0건, substance는 184건이었습니다.

조회 코드가 compound 층만 보고 있었으니, 도구 입장에서는 "세상에 없는 물질"이었던 것입니다.

3. 이름이라도 건지기

substance 층에는 GHS 분류도 물성도 거의 없습니다. 등록 정보와 별칭뿐입니다. 그래도 물질명은 건질 수 있었습니다.

다만 별칭 목록을 그대로 쓸 수는 없었습니다. 실리콘 오일의 184건에는 이런 것들이 섞여 있습니다.

  • Poly(dimethylsiloxane) — 16회
  • Silicone oil — 11회
  • MFCD00148360 — 10회
  • ACMC-20ajve, RL04405 — 각 1회

뒤의 둘은 물질명이 아니라 각 데이터베이스의 내부 등록번호입니다. 그래서 여러 등록건에 걸쳐 가장 자주 등장한 이름을 대표로 삼고, 등록번호 형태의 문자열은 걸러내도록 했습니다. 결과는 "Poly(dimethylsiloxane)", "LAVENDER OIL", "Hydrotreated light distillate"처럼 사람이 읽을 수 있는 이름으로 정리됐습니다.

4. 못 채우는 것은 못 채운다고 적기

여기서 한 가지 원칙을 정했습니다. 이름은 자동으로 채우되, GHS 분류와 물성은 비워 두고 "혼합물·UVCB로 등재된 CAS입니다. 원료 SDS의 값을 직접 입력하세요"라고 안내합니다.

공개 데이터에 없는 값을 추정해서 채우는 것이 더 나빴을 것입니다. MSDS는 추정이 아니라 근거가 필요한 문서이고, 현장에는 이미 그 원료의 SDS가 있습니다. 도구가 할 일은 없는 값을 지어내는 것이 아니라, 무엇이 비었는지 정확히 보여 주는 쪽이라고 판단했습니다.

5. 조회 결과를 다시 확인할 수 있게 남기기

재확인할 때에는 CAS, 조회 날짜, 사용한 데이터 계층, 가져온 필드와 비어 있는 필드를 함께 적습니다. 위의 등록 건수와 별칭 빈도는 당시 조사 기록이며 현재 DB의 고정된 값이 아닙니다. 다른 조회 결과가 나오면 먼저 조회 경로와 날짜를 맞춰 비교해야 합니다.

화면에서 이름을 찾았다는 사실과 필요한 안전정보를 확보했다는 사실은 구분합니다. 이름만 채워진 원료에는 원료 SDS 대조가 여전히 필요합니다. 공개 DB의 누락을 '유해하지 않음'으로 바꾸지 않는 것이 이 도구를 검토할 때의 첫 번째 기준입니다.