>데이터 베이스 >MySQL 튜토리얼 >MySQL 데이터베이스에 배열을 효과적으로 저장하는 방법은 무엇입니까?

MySQL 데이터베이스에 배열을 효과적으로 저장하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-30 10:05:14597검색

How to Effectively Store Arrays in MySQL Databases?

MySQL에서 배열을 효과적으로 저장하는 방법

다양한 이유로 데이터베이스에 배열을 저장해야 하는 경우가 많습니다. 그러나 배열에 대한 데이터 유형이 내장되어 있는 다른 프로그래밍 언어와 달리 MySQL에는 배열 저장을 위한 전용 데이터 유형이 없습니다. 이는 MySQL에서 배열을 저장하는 가장 좋은 방법에 대한 질문을 제기합니다.

배열을 단일 필드에 저장할 수 있습니까?

간단한 대답은 '아니오'입니다. 단일 MySQL 필드에 배열을 저장하는 권장 방법입니다. 단일 필드에 배열을 저장하면 데이터 무결성 문제가 발생하고 데이터를 효율적으로 쿼리하고 검색하기가 어려워집니다.

대체 접근 방식: 관계형 데이터 모델링

권장 접근 방식 관계형 데이터를 검사하고 스키마를 적절하게 변경하는 것입니다. 여기에는 배열에 있는 데이터의 다양한 측면을 나타내기 위해 별도의 테이블과 열을 만드는 작업이 포함됩니다. 데이터를 정규화하면 데이터 무결성을 유지하고 효율적인 쿼리 및 검색이 용이해집니다.

직렬화 기능 사용

단일 필드에 배열을 반드시 저장해야 하는 경우 serialize() 및 unserialize() 또는 json_encode() 및 json_decode()와 같은 직렬화 함수를 사용할 수 있습니다. 이러한 함수는 배열을 단일 필드에 저장할 수 있는 문자열로 변환합니다. 그러나 이 접근 방식에는 한계가 있습니다.

직렬화된 데이터의 실제 내용에 대해서는 쿼리를 수행할 수 없습니다. 또한 배열의 복잡성에 따라 저장되는 데이터의 크기도 늘어납니다.

예: 관계형 데이터 모델링

다음 PHP 배열을 고려하세요.

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

관계형 데이터 모델링을 사용하여 이 배열을 MySQL에 저장하려면 다음을 사용하여 'test'라는 테이블을 생성하세요. 구조:

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)
);

다음과 같은 쿼리를 사용하여 배열의 데이터를 테이블에 삽입합니다.

$query = "INSERT INTO test (id, a, b, c) VALUES ($k, $v['a'], $v['b'], $v['c'])";

테이블에서 데이터를 검색하려면 다음과 같은 쿼리를 수행합니다.

$query = 'SELECT * FROM test';
$ret[array_shift($o)] = $o;

이 접근 방식을 사용하면 데이터 무결성을 유지하면서 어레이의 특정 정보를 효율적으로 쿼리하고 검색할 수 있습니다.

위 내용은 MySQL 데이터베이스에 배열을 효과적으로 저장하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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