2012-02-29 3 views
2

나는 사람이 무언가를 업로드 할 시스템을 가지고있다. 그런 다음 단일 링크가 업로드 된 파일을 식별하고 다른 사용자에게 표시 할 것이다. 각 파일에는 고유 한 페이지가 있으며 주석 상자가 있습니다. 이제는 PHP 스크립트와 SQL을 만드는 방법에 대한 일반적인 생각이 있습니다. 한 가지 문제가 있습니다. 무엇이 더 좋을까요? 각 파일에 대한 모든 주석을 단일 행에 저장하고 각각의 새 주석에 대해 구분 기호를 추가합니까? 또는 각 주석 입력에 대해 새로운 행을 만들지 만 파일에 대한 동일한 참조를 가지고 있습니까? 나는 각 코멘트가 SQL에서 고유 한 행을 가졌지 만 하루에 수천 개의 항목으로 쉽게 자랄 수 있고 효율적인 지 확실하지 않은 것을 선호합니다.PhP SQL 주석 시스템

두 방법 중 어느 방법이 가장 효율적입니까?

답변

1

각 댓글에 새 행을 추가하는 것이 더 합리적입니다. 당신은 FileID가 될 주석 표의 열을 가질 수 있으며 그 결과를 쉽게 필터링 할 수 있습니다. 사람들이 그것에 대해 의견을 말하게하고 행을 추가하게하는 동안, 단일 행을 갖는 것보다 훨씬 더 효율적입니다. 특히 한 줄에 수천 개의 댓글 공간이 충분하지 않을 것으로 생각하면 특히 좋습니다!

댓글이 너무 많을 경우 MongoDB 나 Cassandra와 같은 NoSql 솔루션을 살펴보아야합니다. 이러한 시스템은 다량의 삽입물 (즉, 새로운 주석)을 처리하기 위해 특별히 제작되었습니다.

1

(각각의) 주석 길이가 제한된 경우 VARCHAR 유형의 seprate 행으로 이동하십시오. 각 파일과 관련된 모든 주석에 대해 단일 행을 선택하면 길이 의견을 예측할 수 없으므로 TEXT 유형을 선언해야합니다. 즉, 데이터가 별도의 파일에 저장되며 이로 인해 검색 시간에 영향을 미칩니다 부정적으로. 또한 별도의 행을 사용하면 고급 쿼리 및 데이터 마이닝을보다 쉽게 ​​수행 할 수 있습니다.

또한 별도의 행은 고차 정규화의 일부 요구 사항과 일치합니다.

0

댓글의 길이가 maxlength로 설정되고 데이터베이스의 문자가 VARCHAR 인 행이 있는지 확인하십시오. delemeters를 사용하여 하나의 필드에 데이터를 저장하는 것은 바람직하지 않습니다. 나중에 단계 (날짜//에 의해 게시 됨)에 주석에 대한 정보를 저장하려는 경우 또는 정보를 다시 쿼리하는 경우에도 실제 번거 로움이됩니다.

uploadId를 참조하여 별도의 테이블에 별도의 항목으로 저장하십시오.