300x250
728x90

# CDS Cardinality in  Associations에 대해서 


# " 카디널리티는 [MIN .. MAX] 형식으로 연관 정의에 포함된 소스와 연관된 테이블(또는 CDS 보기) 간의 관계입니다.

주로 데이터 모델의 의미 체계를 문서화하는 데 사용됩니다. " 

-SAP Blog- 

 

# 이해하기 어려워서 최대한 제가 이해한 것을  쉽게 풀어 나가려고 썼다

 

 

우선 차이점부터 보자.

 

 

# Association VS JOIN 차이점


# Association

- 테이블 간의 관계를 정의하는 선언적 방식

- JOIN처럼 데이터를 즉시 가져오지 않고, 필요할 때만 데이터를 가져온다.

- 느슨한 JOIN으로 볼 수 있으며, 트리거하지 않으면 실행되지 않는다.

- 주로 웹/모바일 환경에서 앱 성능 저하를 방지하기 위해 사용된다.

 

# JOIN

- 테이블을 결합하여 데이터한 번에 가져오는 방식

- 즉각 실행되어 모든 관련 데이터를 가져온다.

- 성능에 영향을 줄 수 있으며, 대량의 데이터를 처리할 경우 앱이 느려질 가능성이 있다.

 

둘의 차이점은 개념이 다르다고 생각하면 된다.

 

 

# Association 중요


# 여기서 중요한 것은 트리거하지 않으면 Association연결한 테이블실행이 되지 않는다는 것이 가장 중요시 봐야 한다.

SAP GUI가 아닌 웹 환경이나 모바일 등 애플리케이션을 실행했을 때 JOIN 한 데이터를 한 번에 가져온다는 것은 앱이 느려질 수 있다는 것이다. 그래서 나온 것이 Association이라고 생각하면 된다. 

사용자가 어떤 트리거를 실행했을 때만? 연결된 Table을 가져오는 느낌이라고 보면 되는 것이다.

그렇기 때문에  Join과 Association에 차이는 생각보다 큰 차이가 있다.


 

 

# Cardinality in  Associations 비교 ( 정리중 )


더보기

# 예시를 보자

다음과 같은 테이블이 있다고 하자.

 

# 우선적으로 우리가 알아야 하는 것은 [ 0 or 1  ...  1 or * ] 구분을 할 줄 알아야 한다. 

 

[ 0 or 1 ...  ???  ] 

앞부분은 무조건 연결되어 있는 값이 있는지 없는지로 구분할 수 있다

예를 들어) 

0은  한 사람이 여러 개의 전화번호를 가질 수 있지만? 전화번호가 없는 경우도 있을 수 있다. 

1은  사람은 반드시 생년월일이 있어야 한다.

 

[  ???  ...   1 or * ] 

뒷 부분 중복 값이 있는지 없는지로 구분할 수 있다.

 

 

 

# Association 예시 ( 참고 정도 )


# [ 0..1 ] or [ 1..1 ] 일 때 ( 앞부분 확인 )

 

# SQL문.. 결과

# 중복값 제외하고 SQL 되기 때문에 하나씩 데이터가 나오는 걸 볼 수가 있다. 

1000 : 1개

1001 : 1개

1002 : 1개 

 

# [ 0..* ] or [ 1..* ] 일 때 ( 뒷부분 확인 )

 

# SQL문.. 결과

# 중복 값까지 같이 SQL 되기 때문에 다음과 같이 MONEY 필드 중복된 값만큼 더해져서 가져오게 된다.

# 결과적으로 런타임이 길어지고, 레코드가 복제되어서 이 더해지는 것이다.

1000 : 2개

1001 : 3개

1002 : 1개 

 

 

 

 

 

728x90