장시간 lurker, 처음 질문 묻는 사람 ...다중 값, 문자 구분 열을 여러 행으로 분할하는 방법은 무엇입니까?
친숙한 것 같지만이 특정 문제에 대한 답을 찾지 못했습니다.
세미콜론으로 구분 된 값 목록을 포함하는 열이있는 테이블이 있습니다. 테이블은 해당 응용 프로그램과 연관된 서버와 함께 응용 프로그램의 목록입니다. 서버 목록은 세미콜론으로 구분되지만 serverId로 구분됩니다. x 서버 수에 대한 serverName - 몇 가지 응용 프로그램이 수백 개의 서버와 연관되어 있으며 일부는 1과 연관되어 있으며 일부는 0과 연관되어 있습니다. 이 서버 열은 테이블의 ID와 열의 serverId 및 serverName을 포함하여 각 고유 서버에 대한 행으로 구성됩니다.
이 데이터는 현재이 같은이
applicationId\Servers 1\serverId1;serverName1 2\serverId2;serverName2;serverId3;serverName3 3\serverId1;serverName1;serverId5;serverName5;serverId8;serverName8 4\serverId9;serverName9 5\
및 서버 이름 컬럼과 같다 : 또는
applicationId\serverId\serverName 1\serverId1\serverName1 2\serverId2\serverName2 2\serverId3\serverName3 3\serverId1\serverName1 3\serverId5\serverName5 3\serverId8\serverName8 4\serverId9\serverName9 5\
, 만약 내가 serverId와 serverName,뿐만 아니라 테이블을 가지고 도움이 될 것입니다 applicationId와 테이블에 serverId를 얻을 수 있습니다.
applicationId\serverId
난 그냥에 열을 분할 시도 ';' 하지만 다음과 같이하지 매우 도움이 출력을 생성합니다
applicationId\serverColumn 1\serverId1 1\serverName1 2\serverId2 2\serverName2 2\serverId3 2\serverName3 ....
어떤 도움을 크게 감상 할 수있다.
여기서 가장 큰 문제는이 구분 된 데이터를 저장하는 것입니다. 이제 구분 된 버전을 다른 버전으로 옮기고 싶습니다. 이것은 좋은 계획이 아닙니다. 대신 이것을 정규화 된 디자인으로 이동하는 것을 고려해야합니다. –
문제는 하나의 테이블에 '일대 다 (one to many)'관계를 저장했다는 것입니다. 이 문제뿐만 아니라 데이터를 정규화하여 해결하십시오. 그러나 이것에 대한 앞으로의 모든 문제는 사라질 것입니다. – GuidoG
불행히도이 방법을 사용하면 데이터를 소비 할 수있는 유일한 방법입니다. 그렇지 않으면 확실히 이런 식으로 디자인하지 않을 것입니다. – MattAtWork