>데이터 베이스 >MySQL 튜토리얼 >목록을 관계형 데이터베이스 열에 효율적으로 저장할 수 있습니까?

목록을 관계형 데이터베이스 열에 효율적으로 저장할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-26 04:50:09571검색

Can Lists Be Stored Efficiently in a Relational Database Column?

데이터베이스 열에 목록 저장: 가능합니까?

목록과 같은 복잡한 객체를 데이터베이스 열에 저장하는 작업에 직면했을 때 관계형 데이터베이스에서는 다음과 같은 질문이 생깁니다. 데이터베이스 정규화 원칙을 준수하면서 이를 달성할 수 있습니까?

제공된 예를 들어, 관심 객체인 FOO에는 과일 목록이 포함되어 있습니다. 요구 사항은 데이터베이스 열에 이 목록을 유지하는 것입니다. 그러나 기존 관계형 데이터베이스 스키마에서는 목록과 같은 비정형 데이터를 단일 열에 저장하는 것을 권장하지 않습니다.

관계형 데이터베이스 접근 방식

해결책은 접합이라고 알려진 비정규화된 설계에 있습니다. 테이블. 이 접근 방식에서는 FOO 개체와 여기에 포함된 과일 간의 관계를 저장하는 별도의 테이블인 FOOFruits를 만듭니다. 이 테이블의 각 행은 특정 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)
);

이 접근 방식을 사용하여 데이터 무결성을 보장하고 불일치를 방지합니다. FOO 및 Fruits 테이블의 참조 무결성을 유지하면서

예를 들어 다음을 사용하여 FOO 객체에 과일 "Apple"을 추가하려면 ID=5:

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

이 방법을 사용하면 각 FOO 개체와 관련된 과일 목록을 효율적으로 쿼리하고 검색할 수 있습니다.

위 내용은 목록을 관계형 데이터베이스 열에 효율적으로 저장할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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