MS-Access MDB : 메모 필드를 여러 텍스트 필드로 분할하십시오. (데이터 손상 방지)
-
05-07-2019 - |
문제
백엔드로 사용되는 액세스 데이터베이스를 사용합니다.
나는 메모 필드를 사용합니다.
메모 필드는 별도의 데이터 페이지에 저장되어 있기 때문에 데이터베이스 손상을 유발할 수 있다는 것을 알게되었습니다. 레코드는 실제 데이터가 저장되는 데이터 페이지에 대한 포인터 만 보유합니다.
대부분의 경우 100 ~ 1000 숯 정도가 필요하므로 아이디어가있었습니다 ...
나의 "Brilliant"(또는 그렇지 않은) 아이디어는 메모를 4 ~ 5 개의 텍스트 필드로 나누는 것이 었습니다 (각각 255 숯을 잡을 수 있음).
누구든지 전에 이것을 해본 적이 있습니까?
알려진 문제가 있습니까?
이 접근법이 데이터 손상에 덜 취약할까요?
감사,
뾰족한 모서리
추신
1. 전에는 부패 문제가있었습니다.
2. 가장 좋은 것은 다른 백엔드로 마이그레이션하는 것이지만 불가능합니다.
해결책
더 나은 해결 방법은 첨부 된 레코드에서 메모 데이터 페이지를 해제하는 것입니다. 그렇게하는 방법은 메모 필드를 별도의 테이블에 넣는 것입니다. 1 : 1 테이블 (사이드 테이블에 여러 메모 포함)으로 또는 메모 유형 필드가있는 1 : N 테이블로 더 잘 할 수 있습니다. 후자의 방법은 메모 포인터 문제를 완전히 피할 수있는 유일한 방법입니다. 그러나 이전 솔루션에서 메모 테이블의 메모 포인터의 손상으로 인해 모든 것을 잃게됩니다.
또한 고려해야합니다 왜 데이터베이스는 메모 포인터를 손상시킵니다. 위의 제안 외에도 메모를 부정하지 않은 것을 고려해야 할 것입니다. 비록 문제가 아닌 Jet MDB의 액세스 프론트 엔드를 사용하는 것 같지 않기 때문에 아마도 메모를 부정하지 않을 것입니다. 나는 메모 부패를 때때로 보았지만 자주 자주는 아닙니다. 자주 보면 응용 프로그램이 잘못 설계되었거나 운영 환경이 현저하게 표준 이하임을 제안합니다.
다른 팁
기존 메모 필드를 가져 와서 데이터베이스에 넣고 표시해야 할 때 다시 붙잡고 싶을 것 같습니다.
나는 당신이 그것을 시도한다면 당신이 고통의 세계를 위해있을 것이라고 생각합니다. 그것이 당신의 유일한 옵션이라면 백엔드를 변경하기 위해 더 열심히 노력할 것입니다 :)
나는 당신이 제안한 것과 같은 일을 제안함으로써 DWF의 대답을 기반으로 할 것입니다. 텍스트 필드 (문제가있는 메모 vs)와 함께 1 : n 테이블 (사용자 오노를라고 부르겠습니다)을 만드십시오.
그런 다음 레코드 소스로서 사용자 정체로 하위 형태를 만들고 메모 필드를 사용자 정서 하위 형태로 바꾸십시오. 이를 통해 사용자는 255 문자 텍스트 필드의 컨텍스트 내에서 줄/단락 브레이크가 어디에 있는지 결정할 수 있습니다. (전환을 위해서는 여전히 메모를 잘라야하지만 한 번의 작업 일뿐입니다).