[android] 안드로이드 Room Database의 데이터베이스 외래 키 설정 방법

안드로이드 앱을 개발하다보면 데이터베이스를 사용해야 하는 경우가 많습니다. 안드로이드에서 SQLite를 사용하는 일반적인 방법은 Room Database를 이용하는 것입니다. Room Database를 사용하면 데이터베이스의 외래 키(Foreign Key)를 설정할 수 있으며, 이를 통해 데이터베이스 간의 관계를 간편하게 구성할 수 있습니다.

이번 포스트에서는 안드로이드 Room Database에서 데이터베이스 간의 외래 키를 설정하는 방법에 대해 알아보겠습니다.

Step 1: Entity 클래스 정의하기

Room Database에서 외래 키를 사용하기 위해 먼저 Entity 클래스를 정의해야 합니다. Entity 클래스는 데이터베이스의 각 테이블을 나타내며, 각 테이블은 @Entity 어노테이션으로 표시됩니다.

@Entity(tableName = "employee",
        foreignKeys = @ForeignKey(entity = Department.class,
                                  parentColumns = "departmentId",
                                  childColumns = "departmentId",
                                  onDelete = ForeignKey.CASCADE))
public class Employee {
    @PrimaryKey
    public int employeeId;

    public String name;

    public int departmentId;
}

위의 코드에서는 Employee 클래스가 “employee” 테이블을 나타내며, Department 클래스와 departmentId를 외래 키로 사용하는 것을 간단히 나타내고 있습니다.

Step 2: Database 클래스 생성하기

다음으로는 Room Database 클래스를 생성해야 합니다. Database 클래스에서는 각 Entity 클래스를 포함하고, 데이터베이스 버전 및 마이그레이션 등을 정의할 수 있습니다.

@Database(entities = {Employee.class, Department.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract EmployeeDao employeeDao();
    public abstract DepartmentDao departmentDao();
}

위의 코드에서는 Employee와 Department Entity를 포함하는 AppDatabase를 생성하는 것을 보여줍니다.

Step 3: 외래 키 제한 설정하기

마지막으로, 데이터베이스에서 외래 키를 설정하는 방법을 알아보겠습니다. Room Database에서는 foreignKeys 속성을 사용하여 외래 키를 설정할 수 있습니다.

@Database(entities = {Employee.class, Department.class}, version = 1, foreignKeys = true)
public abstract class AppDatabase extends RoomDatabase {
    // ...
}

위의 코드에서는 AppDatabase 클래스에서 foreignKeys 속성을 true로 설정함으로써 외래 키를 활성화하는 방법을 보여줍니다.

이상으로 안드로이드 Room Database에서 데이터베이스 간의 외래 키를 설정하는 방법에 대해 알아보았습니다. 데이터베이스 간의 관계를 정의하고 관리하는 데에 도움이 되리라 기대됩니다.

더 많은 정보를 원하시면 안드로이드 공식 문서의 “Defining Relationships between Objects” 부분을 참고하시기 바랍니다.

Room Database 공식 문서