programing

Spring JPA(MariaDB) 기본 키가 아닌 여러 개의 키를 외부 키로 사용할 수 있습니까?

telebox 2023. 6. 6. 08:11
반응형

Spring JPA(MariaDB) 기본 키가 아닌 여러 개의 키를 외부 키로 사용할 수 있습니까?

A parent table:
int aTableId; (key)
String type;
String category;


B child table:
int bTableId; (key)
String title;
String type;
String category;

제가 하고 싶은 것은 표 A에 존재하는 유형과 범주의 "조합"을 표 B의 유형과 범주의 조합에 대한 외래 키로 만드는 것입니다.

a.type == b.type &&a.type == b.type을 만족해야 표 B에 삽입할 수 있습니다.

다시 한 번 설명해 드리겠습니다.

A parent table
1. type : food, category : fruit
2. type: food, category: vegetables
3. type : person, category : head

부모 테이블에 이러한 조합이 존재하는 경우,

food - fruit
food - vegetables
person - head

위의 조합은 테이블 B에 삽입할 수 있지만,

person - fruit
person - vegetables
food - head

이 조합은 사용할 수 없습니다.

어떻게 하면 제가 원하는 것을 이룰 수 있을까요?

CREATE TABLE parent (
  aTableId INT PRIMARY KEY,
  type VARCHAR(10) NOT NULL,
  category VARCHAR(10) NOT NULL,
  UNIQUE KEY (type, category)
);

CREATE TABLE child (
  bTableId INT PRIMARY KEY,
  title VARCHAR(50) NOT NULL,
  type VARCHAR(10) NOT NULL,
  category VARCHAR(10) NOT NULL,
  FOREIGN KEY (type, category) REFERENCES parent(type, category)
);

상위 테이블의 보조 후보 키를 참조하는 외부 키를 정의할 수 있습니다.이 키를 신뢰할 수 있는 후보 키로 만들어야 합니다. 이 키는 NULL이 아닌 고유해야 하므로 자식 테이블의 각 참조는 부모 테이블의 행 하나만 참조하도록 보장됩니다.

고유 키와 이 키를 참조하는 외부 키에는 여러 열이 있을 수 있습니다.외부 키는 참조하는 후보 키와 동일한 수의 열 및 유형을 가져야 합니다.

언급URL : https://stackoverflow.com/questions/73757880/spring-jpa-mariadb-is-it-possible-to-use-multiple-non-primary-keys-as-foreign

반응형