>데이터 베이스 >MySQL 튜토리얼 >데이터베이스 열에 목록을 저장하려면 정션 테이블을 정규화해야 합니까, 아니면 사용해야 합니까?

데이터베이스 열에 목록을 저장하려면 정션 테이블을 정규화해야 합니까, 아니면 사용해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-26 15:03:10900검색

Should I Normalize or Use a Junction Table to Store a List in a Database Column?

데이터베이스 열에 목록 저장: 정규화와 접합 테이블

데이터베이스 내에 개체 목록을 저장해야 하는 경우 FOO 개체와 관련된 과일 목록, 정규화와 접합 테이블 간의 선택 등의 열

정규화는 단일 열에 목록을 저장하는 것을 금지합니다. 이 접근 방식은 목록 항목에 대해 별도의 테이블을 생성하여 데이터 무결성을 유지하고 중복성을 줄입니다.

그러나 과일 목록의 경우 이 접근 방식은 이상적이지 않습니다. 과일 ID는 고정되어 다른 테이블에 저장됩니다. 정규화하려면 목록의 각 과일에 대해 과일 테이블에 새 행을 생성해야 하며, 이로 인해 데이터가 너무 커지고 복잡해집니다.

접합 테이블은 반면에 대체 솔루션. FOO 객체와 과일 목록 사이에 다대다 관계를 설정합니다. 접합 테이블의 각 행은 특정 FOO 개체와 특정 과일 간의 연관성을 나타냅니다.

다음은 접합 테이블을 구현하는 방법의 예입니다.

CREATE TABLE FOO (
  id int primary key not null,
  int1 int,
  int2 int,
  int3 int
)

CREATE TABLE Fruits (
  id int primary key not null,
  name varchar(30)
)

CREATE TABLE FOOFruits (
  FruitID int references Fruits (ID),
  FooID int references FOO(id),
  constraint pk_FooFruits primary key (FruitID, FooID)
)

Apple을 추가하려면 접합 테이블을 사용하여 ID=5인 FOO 개체 목록에 Fruit을 추가합니다.

INSERT FOOFruits(FooID, FruitID)
SELECT 5, ID FROM Fruits WHERE name = 'Apple'

이 접근 방식은 정규화의 필요성을 없애고 다음을 제공합니다. FOO 개체와 과일 목록 간의 관계를 관리하는 효율적인 방법입니다.

위 내용은 데이터베이스 열에 목록을 저장하려면 정션 테이블을 정규화해야 합니까, 아니면 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.