집 >데이터 베이스 >MySQL 튜토리얼 >목록을 관계형 데이터베이스 열에 효율적으로 저장할 수 있습니까?
데이터베이스 열에 목록 저장: 가능합니까?
목록과 같은 복잡한 객체를 데이터베이스 열에 저장하는 작업에 직면했을 때 관계형 데이터베이스에서는 다음과 같은 질문이 생깁니다. 데이터베이스 정규화 원칙을 준수하면서 이를 달성할 수 있습니까?
제공된 예를 들어, 관심 객체인 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!