2014-04-14 1 views
0

나는 내가 알았지 만 나중에 나는 갇혀 혼란스러워했다. Json에서 '관계를 생각하는 것'이 가능한가 아니면 u가 백엔드를 설계 할 때만 가능할 수 있는지 묻고 싶습니다.json 데이터의 관계 대 db의 실제 관계

답변

0

JSON은 개체 참조를 지원하지 않지만 JavaScript 개체는 지원합니다. 그들이 일류 시민이므로 함수를 저장할 수도 있습니다.

http://en.wikipedia.org/wiki/JSON#Object_references

var anna = {name: "Anna"}; 
var bob = {name: "Bob", knows: [anna]}; 
var charlie = {name: "Charlie", knows: [anna, bob]} 
anna.knows = [charlie, bob]; 

// 'Bob' 
alert(charlie.knows[0].knows[1].name) 

// ------------------------------------------------- 

var call = function(destination) { 
    alert(this.name + " calls " + destination.name); 
} 
bob.call = call; 

// 'Bob calls Charlie' 
bob.call(charlie); 

그러나 무한 루프 조심!
(밥은 안나를 알고 안나는 밥을 안다, 밥은 안나를 안다 ...)

JSON에서 관계는 값 (이상적으로 레코드의 고유 ID)으로 만 표현할 수 있습니다. 기본적으로 이름을 복제하기 때문에이 이름으로 항목을 조회해야합니다.

var ob_from_json = JSON.parse(' 
    { 
     "bob": {"name": "Bob", "knows": ["anna"]}, 
     "anna: {"name": "Anna", "knows": ["bob"]} 
    } 
'); 

// 'Anna' 
ob_from_json[ob_from_json["bob"].knows[0]].name 
+0

사용자와 친구들을 2 개의 분리 된 테이블로 분리하려면 어떻게해야합니까? 나는 json의 데이터에 액세스하는 방법을 안다. – noob

+0

관계형 데이터베이스 시스템 (MySQL)을 사용하고있는 것 같습니다. 관계형 DB는 실제로 관계를 저장하는 데 좋지 않습니다. n : m 관계를 작성하려면 ID와 두 개의 외부 키, 즉 사용자 ID를 저장하는 추가 표가 필요합니다. Anna가 Bob과 Charlie를 아는 경우 해당 테이블에 두 개의 레코드를 추가합니다 (1, "anna", "bob"), (2, "anna", "charlie"). 예 : 자세한 내용은 http://stackoverflow.com/questions/260441/how-to-create-relationships-in-mysql을 참조하십시오. – CoDEmanX

+0

그래, 알아. 나는 단일 페이지 응용 프로그램을 개발하는 흐름이 어땠는지 물어보고 싶습니다. 나는 많은 사람들이 json의 데이터를 준비하고 그것의 프론트 엔드를 생성하는 것을 보았다. 나는 그들의 db 로직이 json에서 행해지는지 궁금하거나 나중에 관계를 디자인합니까? – noob