theISN
모듈은 EAN13, UPC, ISBN (Books), ISMN (Music) 및 ISSN (Serials)의 다음 국제 제품 번호 표준에 대한 데이터 유형을 제공합니다. 젠 토토는 하드 코딩 된 접두사 목록에 따라 입력에서 검증됩니다. 이 접두사 목록은 또한 출력시 젠 토토를 hypenate하는 데 사용됩니다. 새로운 접두사가 수시로 할당되므로 접두사 목록이 구식이 될 수 있습니다. 이 모듈의 향후 버전은 필요에 따라 사용자가 쉽게 업데이트 할 수있는 하나 이상의 테이블에서 접두사 목록을 얻을 수 있기를 바랍니다. 그러나 현재로서는 소스 코드를 수정하고 다시 컴파일하여 목록을 업데이트 할 수 있습니다. 또는이 모듈의 향후 버전에서 접두사 검증 및 하이픈 지원을 삭제할 수 있습니다.
테이블 F.11ISN
모듈.
표 F.11. ISN
데이터 유형
데이터 유형 | 설명 |
---|---|
EAN13 |
유럽 기사 번호, 항상 EAN13 디스플레이 형식으로 표시 |
ISBN13 |
새로운 EAN13 디스플레이 형식으로 표시 될 국제 표준 책 번호 |
ISMN13 |
새로운 EAN13 디스플레이 형식으로 표시 될 국제 표준 음악 번호 |
ISSN13 |
새로운 EAN13 디스플레이 형식으로 표시 될 국제 표준 일련 번호 |
ISBN |
기존 짧은 디스플레이 형식으로 표시 될 국제 표준 책 번호 |
ISMN |
기존 짧은 디스플레이 형식으로 표시 될 국제 표준 음악 번호 |
issn |
기존 짧은 디스플레이 형식으로 표시 될 국제 표준 일련 번호 |
UPC |
범용 제품 코드 |
일부 참고 사항 :
ISBN13, ISMN13, ISSN13 숫자는 모두 EAN13 숫자입니다.
ean13 숫자는 항상 ISBN13, ISMN13 또는 ISSN13 (일부는)은 아닙니다.
일부 ISBN13 숫자를 ISBN으로 표시 할 수 있습니다.
일부 ISMN13 숫자를 ISMN으로 표시 할 수 있습니다.
일부 ISSN13 숫자는 ISSN으로 표시 될 수 있습니다.
UPC 번호는 EAN13 숫자의 하위 집합입니다 (기본적으로 첫 번째 EAN13입니다0
젠 토토).
All UPC, ISBN, ISMN 및 ISSN 번호는 EAN13 숫자로 표시 될 수 있습니다.
내부적으로 이러한 모든 유형은 동일한 표현 (64 비트 정수)을 사용하며 모두 상호 교환 가능합니다. 제어 디스플레이 서식 및 하나의 특정 유형의 젠 토토를 나타내는 입력의 더 엄격한 유효성 검사를 허용하기 위해 여러 유형이 제공됩니다.
theISBN
, ISMN
및issn
유형은 가능할 때마다 짧은 버전 (ISXN 10)을 표시하며 짧은 버전에 맞지 않는 젠 토토에 대한 ISXN 13 형식을 표시합니다. 그만큼EAN13
, ISBN13
, ISMN13
andISSN13
유형은 항상 ISXN의 긴 버전을 표시합니다 (EAN13).
ISN
모듈은 다음 유형의 캐스트 쌍을 제공합니다.
ISBN13 <= ean13
ISMN13 <= ean13
ISSN13 <= ean13
ISBN <= ean13
ISMN <= ean13
issn <= ean13
UPC <= ean13
ISBN <= ISBN13
ISMN <= ISMN13
ISSN <= ISSN13
출연 할 때EAN13
다른 유형의 경우 값이 다른 유형의 도메인 내에 있고 그렇지 않으면 오류가 발생하는 런타임 확인이 있습니다. 다른 캐스트는 단순히 항상 성공할 방사입니다.
theISN
모듈은 이러한 모든 데이터 유형에 대한 표준 비교 연산자와 B- 트리 및 해시 인덱싱 지원을 제공합니다. 또한 몇 가지 특수 기능이 있습니다. 표시테이블 F.12. 이 테이블에서ISN
모듈의 데이터 유형 중 하나를 의미합니다.
표 F.12. ISN
기능
약한모드는 유효하지 않은 데이터를 테이블에 삽입 할 수 있습니다. 잘못된 젠 토토가 잘못되었음을 의미합니다. 젠 토토가 누락 된 것은 아닙니다.
왜 약한 모드를 사용하고 싶습니까? 글쎄, 당신은 당신이 거대한 ISBN 번호 모음을 가지고있을 수 있으며, 이상한 이유로 일부는 잘못된 체크 숫자를 가지고있을 수 있습니다 (아마도 숫자가 인쇄 된 목록에서 스캔되었고 OCR이 숫자가 잘못되었을 것입니다. 아마도 숫자가 수동으로 포착되었을 것입니다 ... 어쨌든, 요점은 엉망을 정리하고 싶을 수도 있지만 여전히 데이터베이스의 모든 숫자를 가질 수 있고 외부 도구를 사용하여 데이터베이스에서 유효하지 않은 숫자를 찾아 정보를 확인하고 더 쉽게 확인할 수 있습니다. 예를 들어, 표에서 모든 유효하지 않은 숫자를 선택하려고합니다.
약한 모드를 사용하여 테이블에 유효하지 않은 숫자를 삽입하면 수정 된 체크 숫자와 함께 숫자가 삽입되지만 느낌표 (가 표시됩니다.!
) 끝에서0-11-000322-5!
. 이 잘못된 마커는로 확인할 수 있습니다.is_valid
함수와 지우기make_valid
기능.
약한 모드가 아닌 경우에도 유효하지 않은 숫자의 삽입을 강요 할 수도 있습니다.!
젠 토토 끝의 문자.
또 다른 특별 기능은 입력 중에 쓸 수 있다는 것입니다?
체크 젠 토토 대신에 올바른 체크 젠 토토가 자동으로 삽입됩니다.
-직접 유형 사용 : SELECT ISBN ( '978-0-393-04002-9'); 선택 ISBN13 ( '0901690546'); SELECT ISSN ( '1436-4522'); -캐스팅 유형 : - EAN13에서 다른 유형으로 만 캐스트 할 수 있습니다. - 숫자는 대상 유형의 영역에서 유효합니다. - 따라서 다음은 작동하지 않습니다 : select isbn (ean13 ( '0220356483481')); - 그러나 이것들은 다음과 같습니다. UPC를 선택합니다 (EAN13 ( '0220356483481')); EAN13 (UPC ( '220356483481')); -ISBN 번호를 고정하기 위해 단일 열이있는 테이블을 만들어냅니다. 테이블 테스트 생성 (id isbn); 테스트 값에 삽입 ( '9780393040029'); -아파트 원자가 체크 숫자를 계산합니다 ( '?'를 관찰) : 테스트 값에 삽입 ( '220500896?'); 테스트 값에 삽입 ( '978055215372?'); ISSN ( '3251231?')을 선택하십시오. ISMN ( '979047213542?'); -약한 모드 사용 : ISN_WEAK (true)를 선택하십시오. 테스트 값에 삽입 ( '978-0-11-000533-4'); 테스트 값에 삽입 ( '9780141219307'); 테스트 값에 삽입 ( '2-205-00876-x'); ISN_WEAK (false)를 선택하십시오. is_valid (id)가 아닌 테스트에서 ID를 선택하십시오. 업데이트 테스트 세트 ID = make_valid (id) 여기서 id = '2-205-00876-x!'; 선택 *에서 테스트; 테스트에서 ISBN13 (ID)을 선택하십시오.
이 모듈을 구현하기위한 정보는 다음을 포함하여 여러 사이트에서 수집되었습니다.
하이픈 화에 사용되는 접두사도 다음과 같이 컴파일되었습니다.
알고리즘 생성 중에 치료를 받았으며 공식 ISBN, ISMN, ISSN 사용자 매뉴얼의 제안 된 알고리즘에 대해 세 심하게 검증되었습니다..
Germán Méndez Bravo (Kronuz), 2004-2006
이 모듈은 Garrett A. Wollman 's에서 영감을 받았습니다isbn_issn
코드.