Considering the following four tables: Farmer(SIN, name, age, sex, vname) Villag
ID: 3684030 • Letter: C
Question
Considering the following four tables:
Farmer(SIN, name, age, sex, vname)
Village(name, area, population, province)
KKids(SIN, f_sin, m_sin, s_name)
School(sname, vname, no_classes)
Where: sname=school name, vname =village name, f_sin and m_sin stand for the father`s and mother`s SIN, respectively.
2) Code the following queries in XQuery:
a) Find SIN of farmers who have some kids going to school?
b) Find name of each school attended only by kids from the same village where the school is located?
c) Find the name of the most crowded village(s) (most population)?
d) Find SIN numbers of farmers who have at least one kid in every school registered in the database?
e) Find names of villages with no schools?
f) Find the school attended by all kids of Mark? (all kids of Mark must go to school and must attend same school)
g) Find names of farmers whose kids go only to schools outside the Province where the farmers live? (the farmer may have kids not going to schools at all, but if some of the kids go to schools then the schools they attend must be in other Provinces)
Explanation / Answer
Solution:
(2)
Farmer = (SIN, name, age, sex, vname)
Village = (name, area, population, province)
KKids = (SIN, f_sin, m_sin, s_name)
School = (sname, vname, no_classes)
a) Find SIN of farmers who have some kids going to school?
for $e in /db/farmer
$m in distnict($e/SIN)
where $m = SIN
return $e/name
b) Find name of each school attended only by kids from the same village where the school is located?
for $e in /db/school
$s in $e/village
$kids in $s/kkids
where $kkids = $s
return $e/name