2011-10-05 1 views
-4

정확한 질문. 관계를 일대 다 (many-to-many)로 만드는 경우 : many의 상점 ID는 one의 필드에 있습니다. 우리가 매우 자주 상호 작용하고 many 테이블에서 삭제가 예상되지 않는 경우 어떻게 될까요?SQL : PHP 배열을 문자열로 직렬화하여 테이블 셀에 넣으면 어떨까요?

일부 다른 것들

A는 요리가 있습니다. 요리는 제품으로 구성됩니다. 제품에는 자체 가격이 있습니다. 내가 그것을 이런 식으로 할 줄 경우 :

Products columns : { Id, Name , PricePerOne } 


Dish columns: { 
    Id, 
    Name, 
    Content (it is serialized [n x 2] PHP Array with ProductID and Amount of this product in each row) 

를 그리고보다 것은 WHERE Id in (".explode(..).") 또는이 그림을 캐싱과 같은 제품에서 쿼리, 정확한 합계를 할 때 반드시 문자열을 비 일렬 화하고 계산합니다.

그래서 나는 틀린 말을해야 할 것입니다. 그러나이 직렬화 된 문자열을 비교할 필요가 없으며 심지어 뭔가를 할 필요가 없습니다. 단순히 가격을 쿼리하는 데 사용됩니다. 사실 그것은 일대 다 관계에 아주 가깝습니다. 나는 각 접시가 몇 가지 제품과 관련이 있습니다. 그래서, 나는이 정확한 요리 기록이 필요한 제품의 양에 관한 데이터를 간단히 저장합니다.

+2

을 조기 노화를 일으킬 것 (? 연합 (EU)에 가입) 나는 완전히 해요 당신이 묻고있는 것이 확실하지 않습니다. –

+0

당신은 아래 표를 왜 쓰실 수 있습니까? –

+0

나는 투표하지 않았습니다. 나는 그 질문을 이해하지 못한다. –

답변

3

"WHERE"절에서 검색하거나 사용할 항목을 serialize하는 것에 대해서는 권장하지 않습니다.

내 데이터베이스에 넣을 데이터를 직렬화 한 유일한 경우는 나중에 디버깅을 위해 GET 변수의 POST 전체 집합을 로깅하거나 데이터 배열을 캐싱하는 것입니다.

각 예제에서 SQL에서 직렬화 된 문자열을 비교할 필요가 없습니다.

+0

나는 뭔가 잘못 말했음에 틀림 없지만,이 직렬화 된 문자열을 비교할 필요가 없으며, 심지어 그걸로 무언가를 할 필요가 없다. 단순히 가격을 쿼리하는 데 사용됩니다. 사실 그것은 일대 다 관계에 아주 가깝습니다. 나는 각 접시가 몇 가지 제품과 관련이 있습니다. 그래서, 나는이 정확한 요리 기록이 필요한 제품의 양에 관한 데이터를 간단히 저장합니다. –

+0

그런 경우 귀하의 질문은 무엇입니까? –

+0

정확한 질문 : 이와 같이 일대 다 관계를 만드는 경우 :'one' 필드에'many'의 ID를 저장하십시오. 우리가 꽤 많이 사용하지 않고'many' 테이블에서 삭제가 예상되지 않는 경우 어떻게할까요? –

1

직렬화 된 데이터로 작업하는 것이 더 쉽다고 생각할 수도 있지만, 앱이 빙하기 속도로 실행될 때 머리를 찢어 버리면됩니다. 당신은 데이터베이스 사용의 모든 목적을 부정합니다.

이 경로를 시작하기 전에 앉아서 앱을 다시 생각해보십시오.

0

직렬화 된 DB 형식과 SQL과 같은 관계형 요청에서 실행되는 오버 헤드가 수행중인 쿼리의 복잡성에 따라 기하 급수적으로 증가합니다.

뿐만 아니라, 오류 검사 및 더 복잡한 프로세스의 숫자를 수행 의심 할 여지없이 내가이 질문을 다시 읽고 포스트 여러 번했습니다 ...

관련 문제