2011-09-02 3 views
0

, 나는 몇 가지 데이터 저장소 아래와 같이 찾습니다{ "제목"; S : S : 5 43 :} MySQL 데이터베이스에

A : 6 : 5 : "제목"; s : 43 : "fgjfh"; s : 8 : "지방"; s : 6 : "重庆"; s : 4 : "도시"; s : 9 : "大 渡口"; s : 11 : "09-02 12:00"; s : 7 : "endtime"; s : 11 : "endtime"; "09-02 16:00";}

+3

** 이유는 **; 우리는 단지 추측 할 수 있습니다. 하지만 기본적으로 데이터베이스는 문서 저장소로 사용됩니다. 일련 화 된 데이터 얼룩은 데이터베이스가 포함 된 필드로 작업 할 필요가없는 경우에 적합합니다. 그런 다음 개별 테이블/행의 추가 관리 오버 헤드를 피하는 것이 때때로 환영받을 수 있습니다. – mario

+0

@mario 이걸 upvote하고 싶지만 대답으로 게시하지 않았 으면 – ZJR

답변

6

이것은 PHP serialized 어레이입니다. 배열을 데이터베이스에 저장하기 전에 배열을 직렬화했습니다.

코드를 변경하려면 serialize($value) 호출을 찾으십시오.

업데이트 : (실제로는 해시입니다) 동적 필드가 있습니다, 그것은 창조자 너무 어려웠다 또는 그/그녀가 관심이 없었어요

아마

저장된 데이터/할 게으른 그래서/그게 중요하지 않거나 간단하게 그것이 유스 케이스가 아니었던 결정.

그러나 스키마를 다시 생각하고 올바른 (3NF) normalization을 작성해야합니다. 이 경우 같은 을 할 수있는 적어도 하나 개의 테이블이있을 것이다 :

CREATE TABLE data (
    id   INTEGER PRIMARY KEY, -- or SERIAL if your database supports it 
    title  VARCHAR,    -- or TEXT 
    province_id INTEGER NOT NULL, -- or REFERENCES the provinces table 
    city_id  INTEGER NOT NULL, -- or REFERENCES the cities table 
    location VARCHAR,    -- I do not really know what is this field 
    starttime TIMESTAMP, 
    endtime  TIMESTAMP 
); 

물론 당신의 당신이 provincescities 테이블뿐만 아니라 필요합니다. 이 스키마를 사용하면 필요한 경우 데이터베이스 명령어를 사용하여 저장된 데이터로 작업 할 수 있습니다.

+1

가장 마음에 들지 않는 아이디어인데. – Charles

+0

자세히 설명해 주시겠습니까? 왜 직접 데이터를 저장하지 않습니까? – dayulu

+0

@Charles, 쿼리 검색에 사용하지 않으려 고 생각한 이유는 무엇입니까? 캐싱 예를 들어. –