{"action":"created","comment":{"url":"https://api.github.com/repos/leancloud/docs/pulls/comments/53590710","id":53590710,"diff_hunk":"@@ -0,0 +1,142 @@\n+# LeanCloud {{platform}} 关系建模指南\n+\n+数据对象之间存在 3 种类型的关系。一对一关系可以将一个对象与另一个对象关联。一对多关系可以使一个对象关联多个对象。多对多关系可以实现大量对象之间的复杂关系。\n+\n+## LeanCloud 中的关系\n+LeanCloud中 有 4 种方式构建对象之间的关系：\n+\n+1. Pointers （适合一对一和一对多关系）\n+2. Arrays （适合一对多和多对多关系）\n+3. AVRelation （适合多对多关系）\n+4. 关联表 （适合多对多关系）\n+\n+## 一对多关系\n+当你需要一个一对多关系的时候，该使用 Pointers 还是 Arrays 实现，需要考虑几个因素。首先，需要考虑关系中包含的对象数量。如果关系「多」方包含的对象数量可能非常大（大于 100 左右），那么你就必须使用 Pointers。反之，如果对象数量很小（低于 100 或更少），那么 Arrays 可能会更方便，特别是如果你经常需要获取父对象同时得到所有相关的对象（一对多关系中的「多」）。\n+\n+### 使用 Pointers 实现一对多关系\n+#### Pointers 存储\n+中国的「省份」与「城市」的就是一个典型的一对多的关系，例如，深圳和广州（「城市」）都属于广东省（「省份」），而朝阳区和海淀区（「行政区」）只能属于北京市（「直辖市」）。广东省对应着多个一级行程城市，北京对应着多个行政区。如下代码将演示，如何使用 Pointers 来存储这种一对多的关系。","path":"views/relation_guide.tmpl","position":18,"original_position":18,"commit_id":"5022e1170a2d3a0b61e573b8c1f8bba6ee40f14b","original_commit_id":"5022e1170a2d3a0b61e573b8c1f8bba6ee40f14b","user":{"login":"wujun4code","id":5119542,"avatar_url":"https://avatars.githubusercontent.com/u/5119542?v=3","gravatar_id":"","url":"https://api.github.com/users/wujun4code","html_url":"https://github.com/wujun4code","followers_url":"https://api.github.com/users/wujun4code/followers","following_url":"https://api.github.com/users/wujun4code/following{/other_user}","gists_url":"https://api.github.com/users/wujun4code/gists{/gist_id}","starred_url":"https://api.github.com/users/wujun4code/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wujun4code/subscriptions","organizations_url":"https://api.github.com/users/wujun4code/orgs","repos_url":"https://api.github.com/users/wujun4code/repos","events_url":"https://api.github.com/users/wujun4code/events{/privacy}","received_events_url":"https://api.github.com/users/wujun4code/received_events","type":"User","site_admin":false},"body":"done.","created_at":"2016-02-22T06:46:40Z","updated_at":"2016-02-22T06:46:40Z","html_url":"https://github.com/leancloud/docs/pull/442#discussion_r53590710","pull_request_url":"https://api.github.com/repos/leancloud/docs/pulls/442","_links":{"self":{"href":"https://api.github.com/repos/leancloud/docs/pulls/comments/53590710"},"html":{"href":"https://github.com/leancloud/docs/pull/442#discussion_r53590710"},"pull_request":{"href":"https://api.github.com/repos/leancloud/docs/pulls/442"}}},"pull_request":{"url":"https://api.github.com/repos/leancloud/docs/pulls/442","id":41452421,"html_url":"https://github.com/leancloud/docs/pull/442","diff_url":"https://github.com/leancloud/docs/pull/442.diff","patch_url":"https://github.com/leancloud/docs/pull/442.patch","issue_url":"https://api.github.com/repos/leancloud/docs/issues/442","number":442,"state":"open","locked":false,"title":"Relation guide template and acl guide template","user":{"login":"wujun4code","id":5119542,"avatar_url":"https://avatars.githubusercontent.com/u/5119542?v=3","gravatar_id":"","url":"https://api.github.com/users/wujun4code","html_url":"https://github.com/wujun4code","followers_url":"https://api.github.com/users/wujun4code/followers","following_url":"https://api.github.com/users/wujun4code/following{/other_user}","gists_url":"https://api.github.com/users/wujun4code/gists{/gist_id}","starred_url":"https://api.github.com/users/wujun4code/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wujun4code/subscriptions","organizations_url":"https://api.github.com/users/wujun4code/orgs","repos_url":"https://api.github.com/users/wujun4code/repos","events_url":"https://api.github.com/users/wujun4code/events{/privacy}","received_events_url":"https://api.github.com/users/wujun4code/received_events","type":"User","site_admin":false},"body":"Relation guide template and acl guide template","created_at":"2015-08-03T10:11:55Z","updated_at":"2016-02-22T06:46:40Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d161a84e59dbc3b9628187f257183147adae9c42","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/leancloud/docs/pulls/442/commits","review_comments_url":"https://api.github.com/repos/leancloud/docs/pulls/442/comments","review_comment_url":"https://api.github.com/repos/leancloud/docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/leancloud/docs/issues/442/comments","statuses_url":"https://api.github.com/repos/leancloud/docs/statuses/5022e1170a2d3a0b61e573b8c1f8bba6ee40f14b","head":{"label":"wujun4code:relation_guide_template","ref":"relation_guide_template","sha":"5022e1170a2d3a0b61e573b8c1f8bba6ee40f14b","user":{"login":"wujun4code","id":5119542,"avatar_url":"https://avatars.githubusercontent.com/u/5119542?v=3","gravatar_id":"","url":"https://api.github.com/users/wujun4code","html_url":"https://github.com/wujun4code","followers_url":"https://api.github.com/users/wujun4code/followers","following_url":"https://api.github.com/users/wujun4code/following{/other_user}","gists_url":"https://api.github.com/users/wujun4code/gists{/gist_id}","starred_url":"https://api.github.com/users/wujun4code/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wujun4code/subscriptions","organizations_url":"https://api.github.com/users/wujun4code/orgs","repos_url":"https://api.github.com/users/wujun4code/repos","events_url":"https://api.github.com/users/wujun4code/events{/privacy}","received_events_url":"https://api.github.com/users/wujun4code/received_events","type":"User","site_admin":false},"repo":{"id":29326977,"name":"docs","full_name":"wujun4code/docs","owner":{"login":"wujun4code","id":5119542,"avatar_url":"https://avatars.githubusercontent.com/u/5119542?v=3","gravatar_id":"","url":"https://api.github.com/users/wujun4code","html_url":"https://github.com/wujun4code","followers_url":"https://api.github.com/users/wujun4code/followers","following_url":"https://api.github.com/users/wujun4code/following{/other_user}","gists_url":"https://api.github.com/users/wujun4code/gists{/gist_id}","starred_url":"https://api.github.com/users/wujun4code/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wujun4code/subscriptions","organizations_url":"https://api.github.com/users/wujun4code/orgs","repos_url":"https://api.github.com/users/wujun4code/repos","events_url":"https://api.github.com/users/wujun4code/events{/privacy}","received_events_url":"https://api.github.com/users/wujun4code/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/wujun4code/docs","description":"LeanCloud Documentation","fork":true,"url":"https://api.github.com/repos/wujun4code/docs","forks_url":"https://api.github.com/repos/wujun4code/docs/forks","keys_url":"https://api.github.com/repos/wujun4code/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wujun4code/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wujun4code/docs/teams","hooks_url":"https://api.github.com/repos/wujun4code/docs/hooks","issue_events_url":"https://api.github.com/repos/wujun4code/docs/issues/events{/number}","events_url":"https://api.github.com/repos/wujun4code/docs/events","assignees_url":"https://api.github.com/repos/wujun4code/docs/assignees{/user}","branches_url":"https://api.github.com/repos/wujun4code/docs/branches{/branch}","tags_url":"https://api.github.com/repos/wujun4code/docs/tags","blobs_url":"https://api.github.com/repos/wujun4code/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wujun4code/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wujun4code/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/wujun4code/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wujun4code/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/wujun4code/docs/languages","stargazers_url":"https://api.github.com/repos/wujun4code/docs/stargazers","contributors_url":"https://api.github.com/repos/wujun4code/docs/contributors","subscribers_url":"https://api.github.com/repos/wujun4code/docs/subscribers","subscription_url":"https://api.github.com/repos/wujun4code/docs/subscription","commits_url":"https://api.github.com/repos/wujun4code/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/wujun4code/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/wujun4code/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/wujun4code/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/wujun4code/docs/contents/{+path}","compare_url":"https://api.github.com/repos/wujun4code/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wujun4code/docs/merges","archive_url":"https://api.github.com/repos/wujun4code/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wujun4code/docs/downloads","issues_url":"https://api.github.com/repos/wujun4code/docs/issues{/number}","pulls_url":"https://api.github.com/repos/wujun4code/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/wujun4code/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/wujun4code/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wujun4code/docs/labels{/name}","releases_url":"https://api.github.com/repos/wujun4code/docs/releases{/id}","deployments_url":"https://api.github.com/repos/wujun4code/docs/deployments","created_at":"2015-01-16T01:31:32Z","updated_at":"2015-01-06T06:57:48Z","pushed_at":"2016-02-15T02:48:40Z","git_url":"git://github.com/wujun4code/docs.git","ssh_url":"git@github.com:wujun4code/docs.git","clone_url":"https://github.com/wujun4code/docs.git","svn_url":"https://github.com/wujun4code/docs","homepage":"http://leancloud.cn/docs/","size":31953,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":3,"forks":0,"open_issues":3,"watchers":0,"default_branch":"master"}},"base":{"label":"leancloud:master","ref":"master","sha":"a2e7711f7f6b449f36b73af654fc1520abe5389f","user":{"login":"leancloud","id":6660518,"avatar_url":"https://avatars.githubusercontent.com/u/6660518?v=3","gravatar_id":"","url":"https://api.github.com/users/leancloud","html_url":"https://github.com/leancloud","followers_url":"https://api.github.com/users/leancloud/followers","following_url":"https://api.github.com/users/leancloud/following{/other_user}","gists_url":"https://api.github.com/users/leancloud/gists{/gist_id}","starred_url":"https://api.github.com/users/leancloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leancloud/subscriptions","organizations_url":"https://api.github.com/users/leancloud/orgs","repos_url":"https://api.github.com/users/leancloud/repos","events_url":"https://api.github.com/users/leancloud/events{/privacy}","received_events_url":"https://api.github.com/users/leancloud/received_events","type":"Organization","site_admin":false},"repo":{"id":25067518,"name":"docs","full_name":"leancloud/docs","owner":{"login":"leancloud","id":6660518,"avatar_url":"https://avatars.githubusercontent.com/u/6660518?v=3","gravatar_id":"","url":"https://api.github.com/users/leancloud","html_url":"https://github.com/leancloud","followers_url":"https://api.github.com/users/leancloud/followers","following_url":"https://api.github.com/users/leancloud/following{/other_user}","gists_url":"https://api.github.com/users/leancloud/gists{/gist_id}","starred_url":"https://api.github.com/users/leancloud/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leancloud/subscriptions","organizations_url":"https://api.github.com/users/leancloud/orgs","repos_url":"https://api.github.com/users/leancloud/repos","events_url":"https://api.github.com/users/leancloud/events{/privacy}","received_events_url":"https://api.github.com/users/leancloud/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/leancloud/docs","description":"LeanCloud Documentation","fork":false,"url":"https://api.github.com/repos/leancloud/docs","forks_url":"https://api.github.com/repos/leancloud/docs/forks","keys_url":"https://api.github.com/repos/leancloud/docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/leancloud/docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/leancloud/docs/teams","hooks_url":"https://api.github.com/repos/leancloud/docs/hooks","issue_events_url":"https://api.github.com/repos/leancloud/docs/issues/events{/number}","events_url":"https://api.github.com/repos/leancloud/docs/events","assignees_url":"https://api.github.com/repos/leancloud/docs/assignees{/user}","branches_url":"https://api.github.com/repos/leancloud/docs/branches{/branch}","tags_url":"https://api.github.com/repos/leancloud/docs/tags","blobs_url":"https://api.github.com/repos/leancloud/docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/leancloud/docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/leancloud/docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/leancloud/docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/leancloud/docs/statuses/{sha}","languages_url":"https://api.github.com/repos/leancloud/docs/languages","stargazers_url":"https://api.github.com/repos/leancloud/docs/stargazers","contributors_url":"https://api.github.com/repos/leancloud/docs/contributors","subscribers_url":"https://api.github.com/repos/leancloud/docs/subscribers","subscription_url":"https://api.github.com/repos/leancloud/docs/subscription","commits_url":"https://api.github.com/repos/leancloud/docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/leancloud/docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/leancloud/docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/leancloud/docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/leancloud/docs/contents/{+path}","compare_url":"https://api.github.com/repos/leancloud/docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/leancloud/docs/merges","archive_url":"https://api.github.com/repos/leancloud/docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/leancloud/docs/downloads","issues_url":"https://api.github.com/repos/leancloud/docs/issues{/number}","pulls_url":"https://api.github.com/repos/leancloud/docs/pulls{/number}","milestones_url":"https://api.github.com/repos/leancloud/docs/milestones{/number}","notifications_url":"https://api.github.com/repos/leancloud/docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/leancloud/docs/labels{/name}","releases_url":"https://api.github.com/repos/leancloud/docs/releases{/id}","deployments_url":"https://api.github.com/repos/leancloud/docs/deployments","created_at":"2014-10-11T07:14:37Z","updated_at":"2016-02-19T12:39:43Z","pushed_at":"2016-02-22T06:23:40Z","git_url":"git://github.com/leancloud/docs.git","ssh_url":"git@github.com:leancloud/docs.git","clone_url":"https://github.com/leancloud/docs.git","svn_url":"https://github.com/leancloud/docs","homepage":"http://leancloud.cn/docs/","size":32938,"stargazers_count":198,"watchers_count":198,"language":"CSS","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":130,"mirror_url":null,"open_issues_count":86,"forks":130,"open_issues":86,"watchers":198,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/leancloud/docs/pulls/442"},"html":{"href":"https://github.com/leancloud/docs/pull/442"},"issue":{"href":"https://api.github.com/repos/leancloud/docs/issues/442"},"comments":{"href":"https://api.github.com/repos/leancloud/docs/issues/442/comments"},"review_comments":{"href":"https://api.github.com/repos/leancloud/docs/pulls/442/comments"},"review_comment":{"href":"https://api.github.com/repos/leancloud/docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/leancloud/docs/pulls/442/commits"},"statuses":{"href":"https://api.github.com/repos/leancloud/docs/statuses/5022e1170a2d3a0b61e573b8c1f8bba6ee40f14b"}}}}