# 엔티티 엔티티는 데이터베이스 내에 정보를 보유하고 데이터베이스 모델을 구현할 수 있게 하는 요소입니다. 이는 데이터베이스의 테이블이나 뷰로 간주될 수 있습니다. 엔티티는 관련 정보를 저장하는 엔티티 속성을 통해 정의됩니다. 엔티티 속성의 예는 다음과 같습니다: 이름, 주소, 우편번호, 도시 등. ## 기본 키 OutSystems에서 기본 키는 "엔티티 식별자"라고 불립니다. 엔티티가 생성되면 "Id"라는 속성이 자동으로 엔티티 식별자로 추가됩니다. 기본적으로 데이터 타입은 Long Integer이며, 자동으로 시퀀스 번호로 값이 계산됩니다(OutSystems에서는 AutoNumber). 따라서 개별 엔티티 레코드를 고유하게 식별하기 위한 특별한 로직을 구현할 필요가 없습니다. 다른 데이터 타입을 엔티티 식별자로 사용하거나 속성의 AutoNumber를 비활성화할 수 있습니다. 그 경우에는 개별 엔티티 레코드를 고유하게 식별하기 위한 로직을 구현해야 합니다. 다른 속성을 엔티티 식별자로 설정하려면 해당 속성을 마우스 오른쪽 버튼으로 클릭하여 식별자로 설정합니다. OutSystems에서는 엔티티 식별자가 될 수 있는 것은 하나의 속성뿐이므로 복합 키를 가질 수 없습니다. 그러나 인덱스를 사용하여 대체 키를 만들 수 있습니다(인덱스에 대해서는 아래 참조). ## 시퀀셜 속성 엔티티 식별자 속성에는 시퀀셜 속성이 유용합니다. 이를 통해 각 레코드가 쉽게 고유한 기본 키를 가질 수 있게 됩니다. 엔티티 액션에 의해 새 레코드가 생성되면 플랫폼이 자동으로 시퀀셜하고 고유한 새 값을 계산합니다. 하나의 엔티티에 허용되는 시퀀셜 속성은 하나뿐입니다. ## 인덱스 관계형 데이터베이스와 마찬가지로 OutSystems는 엔티티의 데이터에 빠르게 접근하기 위한 인덱스를 제공합니다. 일반적으로 엔티티의 하나 또는 여러 속성으로 검색이나 정렬을 할 경우, 이러한 속성에 기반한 인덱스를 생성하여 속도를 높일 수 있습니다. 인덱스는 대체 키나 복합 키를 만드는 데도 사용할 수 있습니다. 인덱스를 생성할 때는 데이터 검색과 삽입 중 어느 것을 우선시할지 고려해야 합니다(후자에 약간의 오버헤드가 발생할 수 있으므로). ## 엔티티 변경 시 영향 새로운 엔티티 속성을 생성하면 플랫폼이 데이터베이스에 저장된 모든 레코드의 업데이트를 자동으로 관리합니다. 새 속성은 레코드에 추가되고 해당 데이터 타입의 기본값이 설정됩니다. 엔티티 속성을 필수로 설정하면 사용자 인터페이스에서 플랫폼에 의해 자동으로 검증됩니다. 그러나 데이터베이스에서는 필수 속성이 Null 값을 허용하도록 생성되므로 데이터베이스 레벨에서는 필수 속성이 검증되지 않습니다. 엔티티나 엔티티 속성을 삭제하면 그것이 사용되고 있는지 여부와 관계없이 플랫폼은 허용하고 삭제하지만, 사용되고 있는 경우 요소를 수정해야 합니다. 데이터베이스에서는 플랫폼이 엔티티나 엔티티 속성을 삭제하지 않습니다. ## 엔티티와 정적 엔티티 선택하기 관리해야 할 데이터 유형에 따라 엔티티와 정적 엔티티를 사용합니다. - 시간에 따라 변할 수 있는 데이터를 저장할 경우 엔티티를 사용합니다. 엔티티는 실행 시 생성, 읽기, 업데이트, 삭제(CRUD) 작업을 지원합니다. - 실행 시 변하지 않는 고정된 사전 정의된 데이터의 경우 정적 엔티티를 사용합니다. 정적 엔티티는 읽기 작업만 지원하며 열거형으로 기능합니다. 자세한 내용은 ["정적 엔티티"](https://success.outsystems.com/ja-jp/documentation/11/building_apps/data_management/data_modeling/static_entities/)를 참조하세요. 예를 들어, 회계 앱에서 사용자 세부 정보를 저장해야 한다고 가정해 봅시다. 이 데이터는 자주 변경될 수 있으므로 엔티티에 저장합니다. 반면, [PaymentStatus] 필드에 "대기 중", "완료됨", "실패" 등의 사전 정의된 값을 저장하는 경우에는 고정 값이므로 정적 엔티티를 사용해야 합니다. ### 엔티티를 정적 엔티티로 변환하기 기존 엔티티를 정적 엔티티로 변환하려면 엔티티를 마우스 오른쪽 버튼으로 클릭하고 **Advanced** 메뉴에서 **Convert to Static Entity**를 선택합니다. 엔티티를 정적 엔티티로 변환한 후에는 데이터베이스 레코드를 정적 레코드로 가져올 수 있습니다. 데이터베이스 레코드를 가져오려면 정적 엔티티를 마우스 오른쪽 버튼으로 클릭하고 **Edit Entity**를 선택한 다음 **Import from Database** 버튼을 클릭합니다. 기존 정적 엔티티를 엔티티로 변환하려면 엔티티를 마우스 오른쪽 버튼으로 클릭하고 **Advanced** 메뉴에서 **Convert to Entity**를 선택합니다.