
OutSystems에서는 데이터를 다음과 같이 정의한다.

기존에 MySql을 사용할 때 익숙했던 데이터베이스의 구조는 Table - Columns 였는데
OutSystems에서는 Entity - Attributes로 정의되고,
MySql에서는 내가 외래키 설정을 반드시 해줬어야 했는데
OutSystems에서는 Entity이름+Id을 Attribute에 추가했을 때
자동으로 Reference Attribute이 되어서 정말 편하다.
-> 자동으로 테이블끼리 연관관계가 맺어진다는 게 진짜 신세계
=>

이렇게 많은 데이터 타입이 있고, 타입의 경우 직접 정해주지 않아도
Entity안에 Attribute를 만들었을 때 이름에 따라 자동으로 설정이 된다.
(진짜 충격적.. Integer이랑 String이 자동으로 정해지는 충격적인 순간)

데이터베이스를 생성하는 방법은 세세하게 나누면 세가지가 있는데
Add Entity + Add Attribute 직접 생성하기 + 데이터 직접 입력
Entity만들고 Import New Entity from Excel로 데이터를 자동 불러오기

나는 이미 가지고있는 Excel Data의 경우에는 엔티티를 만들고 Attribute를 만들어서 오류를 약간이라도 더 줄일 수 있는 3번을 선호한다...!

많이 가지고자하는 엔티티의 Id와 연결된 Attribute를 만든다(세부엔티티가 마스터엔티티를 참조하도록)
Master-Detail Entity

연결하고자하는 Entity의 ID의 이름을 동일하게 생성해준다
(혹은 DataType을 연결하고자하는 Entity의 Identifier과 연결한다.)

다대다 관계를 맺고싶은 Entity 간의 교차Entity를 생성해준다.
-> 데이터 간 관계를 맺을 경우, 연결되어있는 Attribute에 저장된 데이터가 삭제될 경우 데이터에 오류가 생길 수 있으므로, Delete Rule에 Delete를 지정해주면 cascade설정을 해준거랑 같은 효과를 볼 수 있다!

데이터베이스를 출력할 때 다중 엔티티를 출력하는 방법은 여러가지가 있는데,
그중 Join과 비슷한 역할을 하는 Aggregate에 대해 설명하고자 한다.
익숙한 sql과 비교했을 때
a. OnlyWith : InnerJoin
b. With or Without : LeftJoin
c. With : FullOuterJoin
이렇게 이해하면 조금 편하다.

이런식으로 OutSystems에서는 Sql문을 따로 작성하지 않고도 Join관계를 설정할 수 있는 테이블이 제공된다.
Aggregate는 출력에는 영향을 주지 않는다