10. دانشجو دروس به درس یک افزودن
تابعی اینجا در ! اسکریپت جاوا زبان از استفاده از بهتر راهی چه (ترم یک در درس یک نمره مثال این )در داده کردن اضافه برای
: نویسیم می ترم یک در نمره کردن اضافه جهت اسکریپ جاوا زبان به
CREATE OR REPLACE FUNCTION add_course(
data jsonb, myear integer, semester integer, course integer,grade double precision )
RETURNS jsonb AS
$BODY$
var new_data=JSON.parse(data);
/*check if data is a valid jsonb type*/
if(!new_data){return data;}
/*check if grade is valid*/
if(grade<0 || grade>20){return data;}
/* each year has 2 semesters (1 or 2)*/
if(semester !=1 && semester!=2){return data;}
/*iterate through each year to find the match one or return false*/
var match_year_found=false;
for(var i=0;i<new_data.length;++i){
var each_year = new_data[i];
if(each_year.year==myear){
match_year_found=true;
//todo
var match_semester_found=false;
for(var j=0;j<each_year.semesters.length;++j){
var each_semester=each_year.semesters[j];
if(each_semester.semester==semester){
/*match semester found*/
match_semester_found=true;
if(each_semester.lessons && typeof each_semester.lessons==='object'){
each_semester.lessons.push({less_code:course,grade:grade});
break;
}else{
each_semester.lessons=[{less_code:course,grade:grade}];
break;
}
}
}
if(match_year_found==true){
/*so we have to create our semester in this year*/
each_year.semesters.push({semester:semester,lessons:[{less_code:course,grade:grade}]});
break;
}
//todo
}
}
if(match_year_found==false){
/*so we have to create a year for this person_id*/
new_data.push({year:myear,semesters:[{semester:semester,lessons:
{less_code:course,grade:grade}]}]});
}
return JSON.stringify(new_data)
$BODY$
LANGUAGE plv8 IMMUTABLE STRICT
باشد می زیر بروش درس یک کردن اضافه نحوه و
update persons
set grades = (select add_course(grades,1373,1,1000002,11.50)
from persons
where person_id=100) where person_id=100;
11. های داده رسانی بروزJSON
:باشد می صورت بدین ما روال درس نمره رسانی بروز جهت
CREATE OR REPLACE FUNCTION update_course(
data jsonb,
myear integer,
semester integer,
course integer,
grade double precision)
RETURNS jsonb AS
$BODY$
var new_data=JSON.parse(data);
/*check if data is a valid jsonb type*/
if(!new_data){return data;}
/*check if grade is valid*/
if(grade<0 || grade>20){return data;}
/* each year has 2 semesters (1 or 2)*/
if(semester !=1 && semester!=2){return data;}
/*iterate through each year to find the match one or return false*/
var match_year_found=false;
for(var i=0;i<new_data.length;++i){
var each_year = new_data[i];
if(each_year.year==myear){
match_year_found=true;
var match_semester_found=false;
for(var j=0;j<each_year.semesters.length;++j){
var each_semester=each_year.semesters[j];
if(each_semester.semester==semester){
/*match semester found*/
match_semester_found=true;
if(each_semester.lessons && typeof each_semester.lessons==='object'){
for(var k=0;k<each_semester.lessons.length;++k){
if(each_semester.lessons[k].less_code==course){
/*now update the course*/
each_semester.lessons[k].grade=grade;
return JSON.stringify(new_data);
}//if
}//for
break;
}else{
return data;
}//if
}//if
}//for
}//if
}//for
return JSON.stringify(new_data)
$BODY$
LANGUAGE plv8 IMMUTABLE STRICT
COST 100;
ALTER FUNCTION update_course(jsonb, integer, integer, integer, double precision)
OWNER TO postgres;
: است چنین هم استفاده طریقه و
update person set data = (select update_course(data,1370,3,103,16.35) from person where
person_id=100) where person_id=100;
12. های داده حذفJSON
: نویسیم می چنین روالی درس یک حذف جهت
CREATE OR REPLACE FUNCTION delete_course(
data jsonb,
myear integer,
semester integer,
course integer)
RETURNS jsonb AS
$BODY$
var new_data=JSON.parse(data);
/*check if data is a valid jsonb type*/
if(!new_data){return data;}
/* each year has 2 semesters (1 or 2)*/
if(semester !=1 && semester!=2){return data;}
/*iterate through each year to find the match one or return false*/
var match_year_found=false;
for(var i=0;i<new_data.length;++i){
var each_year = new_data[i];
if(each_year.year==myear){
match_year_found=true;
var match_semester_found=false;
for(var j=0;j<each_year.semesters.length;++j){
var each_semester=each_year.semesters[j];
if(each_semester.semester==semester){
/*match semester found*/
match_semester_found=true;
if(each_semester.lessons && typeof each_semester.lessons==='object'){
for(var k=0;k<each_semester.lessons.length;++k){
if(each_semester.lessons[k].less_code==course){
/*now update the course*/
each_semester.lessons.splice(k,1);
return JSON.stringify(new_data);
}
}
break;
}else{
return data;
}
}
}
}
}
return JSON.stringify(new_data)
$BODY$
LANGUAGE plv8 IMMUTABLE STRICT
COST 100;
ALTER FUNCTION delete_course(jsonb, integer, integer, integer)
OWNER TO postgres;
: است چنین هم آن از استفاده روش و
update person set data = (select delete_course(data,1375,1,102) from person where person_id=100)
where person_id=100;
اطلاعاتی های بانک مفاهیم تا کوشیدیم مقاله این درNosqlهای نوع قالب در راjsonوhstoreمقدماتی دید یک و داده بسط
قالب در ها داده سازی ذخیره روش از اکنون کنیم.هم ارایه آینده های سیستم طراحی ازjsonاما شود می استفاده ل گ جداول در
یا و بستگان و فرد )موجودیت آمد مثال در آنچه مانند اطلاعاتی های سیستم اصلی ( )جداول های موجودیت خصوص در هنوز
ای داده های نوع از استفاده کال(و مخصوص صفات و کال موجودیتNosqlاین ارایه با است امید که دارد وجود تردید و شک
.شود هموار مسیر این در گذاشتن قدم برای راه حدی تا مقاله