2014-10-19 2 views
0

고유 한 문자열 필드가있는 레코드가있는 JDBC MySQL 데이터베이스에 테이블이 있습니다. 해당 문자열은 URL입니다. 각 URL에는 정확한 URL로 이름 지정된 테이블이 있어야합니다.URL을 테이블 이름으로 사용합니다.

문제 : 일부 URL은 64 개 이상의 문자로 구성되며 테이블 식별자 (MySQL Reference)의 최대 길이를 초과합니다. URL에 허용되지 않는 문자가 포함되어 있습니다.

어떻게 처리해야합니까? 내 생각 엔 제한을 따르고 bijection 함수로 작동하는 일종의 엔코더를 찾거나 만들어야했습니다. 어떤 아이디어?

+1

URL에서 매핑을 저장하기 위해 별도의 테이블을 사용하지 않는 이유 테이블 이름으로? 당신은 table1, table2와 같은 테이블 이름을 사용할 수 있습니다 ... – Barry

+0

이것은 끔찍한 생각입니다. 해시 값을 저장할 수 있습니다. SHA1은 정확한 32 바이트를 생성하므로 64 문자로 표현할 수 있습니다. – msrd0

답변

0

테이블을 URL로 이름을 지정하는 것은 끔찍한 생각입니다. 최대 이름 길이 문제뿐만 아니라 인코딩 문제 및 이스케이프 문제도 해결할 수 있습니다.

더 좋은 방법은 자동 이름 (표 1, 표 2 등)을 생성하고 그것을 위해 만든 테이블에 URL을 매핑하는 인덱스 테이블을 가지고하는 것입니다

0

URL 당 표는? 아니, 그건 어리 석다.

URL이있는 테이블 하나와 그 테이블과 1 : 많은 관계가있는 테이블이 있어야합니다. 귀하의 아이디어는 확장 할 수 없습니다.

기본 키로 URL을 사용하지 않는 것이 좋습니다.

더 좋은 아이디어는 데이터베이스의 자동 생성 키와 URL 열의 UNIQUE 제약 조건입니다. 원하는 경우 URL을 CLOB로 사용할 수 있습니다. 그런 식으로 어떤 length limitations도 실행해서는 안됩니다.

관련 문제