[]
        
(Showing Draft Content)

테이블 관계

데이터 매니저는 테이블 간 관계 정의를 지원합니다.

관계는 한 테이블의 필드를 다른 테이블의 필드와 연결합니다.

관계가 생성되면 관계 이름을 사용하여 관련 테이블의 필드에 접근할 수 있습니다.

관계는 DataManager 수준에서 정의됩니다.

관계 생성

addRelationship을 사용하여 두 테이블 간의 관계를 정의합니다.

dataManager.addRelationship(
  sourceTable,
  sourceFieldName,
  sourceRelationshipName,
  targetTable,
  targetFieldName,
  targetRelationshipName
);

매개 변수

  • sourceTable - 관계가 정의되는 원본 테이블입니다.

  • sourceFieldName - 매칭에 사용되는 원본 테이블의 필드입니다.

  • sourceRelationshipName - 원본 테이블에서 관련 테이블에 접근할 때 사용하는 관계 이름입니다.

  • targetTable - 관련 대상 테이블입니다.

  • targetFieldName - 매칭에 사용되는 대상 테이블의 필드입니다.

  • targetRelationshipName - 대상 테이블에서 원본 테이블에 접근할 때 사용하는 관계 이름입니다.

이 메서드는 관계를 설명하는 IRelationship 객체를 반환합니다.

예제

const dataManager = spread.dataManager();

const orders = dataManager.addTable("orders", {
  data: [
    { orderId: 1, orderDate: "2024-01-01", employeeId: 100 },
    { orderId: 2, orderDate: "2024-01-02", employeeId: 101 }
  ]
});

const employees = dataManager.addTable("employees", {
  data: [
    { employeeId: 100, firstName: "Nancy", title: "Manager", address: "Seattle" },
    { employeeId: 101, firstName: "Andrew", title: "Sales", address: "Tacoma" }
  ]
});

// 관계 생성
const relationship = dataManager.addRelationship(
  orders,
  "employeeId",
  "employee",
  employees,
  "employeeId",
  "orders"
);

// View에서 관련 필드 접근
const myView = orders.addView("myView", [
  { value: "orderId" },
  { value: "orderDate" },
  { value: "employee.firstName" },
  { value: "employee.title" },
  { value: "employee.address" }
]);

이 예제에서:

  • "employee"orders 테이블에 정의된 관계 이름입니다.

  • 관련 테이블 필드는 점 표기법을 사용하여 접근합니다.

relationshipName.fieldName

관련 데이터 접근

관계가 생성된 후 관련 필드는 View에서 다음 형식으로 참조할 수 있습니다.

relationshipName.fieldName

예제:

{ value: "employee.firstName" }

관계 이름은 관련 테이블로 이동하기 위한 탐색 경로 역할을 합니다.

관계 저장

관계는 DataManager에 저장됩니다.

addRelationship를 호출할 때마다 새로운 관계 항목이 생성됩니다.

동일한 DataManager 내에 여러 관계가 공존할 수 있습니다.

관계 이름은 개발자가 정의합니다. API는 관계 이름의 고유성을 강제하지 않습니다.

관계 제거

관계를 제거하려면 removeRelationship를 사용합니다.

dataManager.removeRelationship("employee");

관계가 제거되면 해당 관계 이름을 통한 관련 필드 접근은 더 이상 사용할 수 없습니다.