code

대리 키가 사용되는 경우 테이블에 삽입

starcafe 2023. 10. 20. 13:53
반응형

대리 키가 사용되는 경우 테이블에 삽입

테이블이 두 개 있습니다.

표 1은 다음과 같습니다.

  • product_id (INT 11)- PK, 자동 증분
  • category (INT 11)- 색인, FK 대상Table2.category_id
  • product (VARCHAR 255)

표 2는 다음과 같습니다.

  • category_id (INT11)- PK, 자동 증분
  • category_name (VARCHAR 255)

이제 1번 테이블에 새로운 제품을 추가할 때는INSERT카테고리와 상품 모두.하지만, 카테고리는 다음과 관련된 대리 키입니다.Table2.category_id열(각 범주에는 열이 있음), 즉 삽입할 때 실제로는category_id, 바로 그category_name.

이 작업을 효율적으로 수행할 수 있는 방법에 대한 아이디어가 있습니까?

아니면 그냥 대리 키를 포기하고 자연 키에 충실해야 할까요?

감사해요.

만약 당신이 새로운 제품을 삽입하고 싶지만 당신이 아는것은category_name, 그러나 그렇지는 않습니다.category_id, 그 다음에 우리는 시도합니다.INSERT INTO ... SELECT:

INSERT INTO table1 (category, product)
SELECT category_id, 'new product'
FROM table2
WHERE category_name = 'some category';

여러 가지 이유로 인해 이것은 나쁜 디자인으로 느껴집니다.첫째, 아마도 당신의 앱(예: PHP)은 다음과 같이 처리할 것입니다.category_id복면을 쓰고 있는category_name. 그래서 이상적으로 당신은 질문할 필요가 없습니다.table2이 삽입체를 작동시킬 수 있습니다.여기서 또 다른 문제는 둘 이상의 카테고리가 같은 이름을 가질 수 있다는 것입니다(그러나 다른 이름).category_id). 가능하면 기본 키로 직접 작업하는 것이 좋습니다.

언급URL : https://stackoverflow.com/questions/53028151/insert-to-table-when-surrogate-key-is-being-used

반응형