>  기사  >  백엔드 개발  >  MySQL에 배열 데이터를 저장하는 방법: 단일 필드와 관계형 스키마?

MySQL에 배열 데이터를 저장하는 방법: 단일 필드와 관계형 스키마?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 19:14:02401검색

How to Store Array Data in MySQL: Single Field vs. Relational Schema?

MySQL에 배열 데이터 저장: 대체 접근 방식

단일 MySQL 필드에 배열을 저장하는 것이 편리한 솔루션처럼 보일 수 있지만, 일반적으로 데이터 무결성과 효율적인 쿼리 기능을 손상시키므로 권장되지 않습니다. 대신, 배열의 다양한 요소를 수용하도록 데이터베이스 스키마를 조정하는 것이 더 적절합니다.

관계형 스키마 재설계의 예

다음 구조의 배열을 고려해보세요. :

$a = array(
    1 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
    2 => array(
        'a' => 1,
        'b' => 2,
        'c' => 3
    ),
);

이 배열을 관계형 데이터베이스에 효과적으로 저장하려면 다음과 같은 테이블을 만들 수 있습니다.

CREATE TABLE test (
  id INTEGER UNSIGNED NOT NULL,
  a INTEGER UNSIGNED NOT NULL,
  b INTEGER UNSIGNED NOT NULL,
  c INTEGER UNSIGNED NOT NULL,
  PRIMARY KEY (id)
);

배열 데이터 저장을 위한 대체 옵션

단일 필드에 배열을 저장해야 하는 경우 직렬화 및 JSON 인코딩과 같은 옵션을 활용할 수 있습니다.

  • 직렬화(serialize() 및 unserialize()) - 배열을 데이터베이스 필드에 저장할 수 있는 문자열로 변환합니다. 그러나 이로 인해 실제 배열 콘텐츠를 쿼리하는 기능이 제한됩니다.
  • JSON 인코딩(json_encode() 및 json_decode()) - 직렬화와 유사하지만 더 많은 구조와 상호 운용성을 제공합니다.

JSON 인코딩 활용 예

JSON 인코딩을 사용하여 배열 $a를 저장한다고 가정합니다.

$json_encoded = json_encode($a);

배열을 검색하려면 데이터베이스에서:

$json_decoded = json_decode($json_encoded, true);

이 접근 방식을 사용하면 배열 요소에 직접 액세스할 수 있습니다.

위 내용은 MySQL에 배열 데이터를 저장하는 방법: 단일 필드와 관계형 스키마?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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