2011-12-28 4 views
0

사람이 페이스 북에서 좋아하는 모든 영화 목록과 같은 것을 저장하는 것을 고려 중이면 한 사람당 열의 수가 일정하지 않습니다. NoSQL을 선호하지 않는 기사를 읽었습니다. MySQL 해킹을 통해 이와 같은 작업을 수행 할 수 있습니까?열 개수가 다를 때 데이터베이스 선택

답변

0

해킹이 필요하지 않으므로 스키마가 관계형이되도록 계획해야합니다.

예를 들어 Users라는 테이블이 있고 id, name, email, password 필드가 있다고 가정합니다. 그것의 그래픽 표현이 같은 것입니다 : 당신은 사용자가 좋아하는 영화를 저장할 때문에, 아직 다른 테이블 불리는 UsersMovies, 필드 ID, USER_ID를 포함을 가질 수

id | name | email | password 
------------------------------------ 
1 | John | [email protected] | <md5 hash> 
2 | Mark | [email protected] | <md5 hash> 
ETC... 

그런 다음, movie_id :

id | user_id | movie_id 
----------------------- 
1 | 1  | 187 
2 | 1  | 486231 
3 | 2  | 9843 
4 | 1  | 457 
ETC... 

이 두 번째 테이블에는 각 사용자와 그가 좋아하는 영화 사이의 관계가 포함됩니다. 이것은 user_id 1에 대해 id, 187, 486231 및 457이있는 영화를 좋아한다는 것을 알 수 있습니다.이 movie_id는 Facebook의 영화 ID 또는이 영화를 식별 할 수있는 모든 것을 보유 할 수 있습니다. SELECT user_id FROM UsersMovies WHERE movie_id='X'

것처럼 간단 할 것 영화 X를 좋아하는 모든 사용자를 가져 오는 동안, SELECT * FROM UsersMovies WHERE user_id='X', X는 사용자 테이블에서 사용자의 ID 인 : 같은 간단한 것 X 사용자의 모든 영화를 가져 오는이 모델을 채택

,

this place에서 자세한 내용을 볼 수 있습니다.

1

나는이 질문에 대한 답변에서 언급 한 바와 같이 :

insert into two tabels in mysql database at the same time

은 무엇 당신이 할 찾고 하나를 저장하는 테이블을 만드는 것입니다 -> 많은 관계를. 열 수를 변경하는 것은 불가능합니다. 동일한 사용자로 여러 행을 연결하는 것입니다.

0

전통적인 관계형 데이터베이스 (예 : MySQL)로 할 수 있습니다.

스키마 스키마 -ful 데이터베이스이므로 각 행마다 다른 열 집합을 사용할 수 없습니다. 그러나 한 열 (예 : extra)을 입력하면 TEXT (또는 BLOB)이됩니다.

가변 열을 모두 가져 와서 JSON (또는 XML 또는 Protobuf 또는 MessagePack 등)으로 직렬화하고이 특수 열에 쓸 수 있습니다.

이렇게하면 임의의 데이터를 레코드에 쓸 수 있으며 MySQL을 계속 사용할 수 있습니다. 그러나 대부분의 RDBMS 기능을 잃어 버렸습니다. 인덱싱, 쿼리 및 효율적인 데이터 업데이트입니다. 영속성이있는 키/값 저장소 입니다.

이제 진정한 NoSQL 솔루션을 사용하는 것이 나을 것입니다. 그 중에서도 더 좋은 것들은 MongoDB입니다. 스키마가없는 데이터베이스입니다. 즉, 모든 행 (또는 해당 전문 용어의 문서)은 고유 한 필드 집합을 가질 수 있습니다. 해당 필드에 보조 인덱스를 작성하고 문서를 효율적으로 쿼리 할 수 ​​있습니다. 더 많은 기능과 프리젠 테이션 및 비디오를 보려면 See the site.

가능한 한 많은 정보를 수집하고 정보 결정을하십시오.