מבחן לדוגמא במסדי נתונים – כולל תשובות!
מבחן לדוגמא בקורס מסדי נתונים. ללמידה אפקטיבית, קודם נסו לפתור את השאלה בעצמכם, ורק לאחר מכן לחצו על "לחץ לגילוי התשובה" ובדקו את עצמכם.
שאלה 1
נתונות הטבלאות הבאות לייצוג מרפאת שיניים:
Patients (patientId, firstName, lastName, YearOfBirth, gender)
TreatmentTypes (treatmentTypeId, treatmentName, price)
TreatmentForPatient (patientId,treatmentTypeId, dayAsInt)
ניתן להניח שdayAsInt הוא מספר שלם המייצג את יום העסקים מאז המרפאה החלה לפעול.
כיתבו את השאילתא הבאה:
מספר לקוחות נשים שטופלו בכל יום (gender=1).
select tp.dayAsInt, count(p.patientId) from
TreatmentForPatient as tp
join Patients as p on(tp.patientId = p.patientId)
where(p.gender = 1) group by(dayAsInt);
שאלה 2
בהתבסס על נתוני השאלה הקודמת, כתבו את השאילתא הבאה:
ההכנסה של המרפאה בכל יום בו הייתה הכנסה לפחות 1000 ש"ח.
select tp.dayAsInt, sum(tt.price) as totalPrice from
TreatmentTypes as tt join
TreatmentForPatient as tp
on(tp.treatmentTypeId = tt.treatmentTypeId)
group by(tp.dayAsInt) having (totalPrice > 1000);
שאלה 3
נתונה הרלציה הבאה:
R(A, B, C, D, E, F)
והתלויות הבאות:
{A}->B
{A, E, F} ->C
{A, B}->D
{E, F} -> D
{B, D} -> A
מה מפתחות הקנדידייט?
1. (A,E,F)
2. (B,E,F)_
שאלה 4
בהתבסס על נתוני השאלה הקודמת, באיזו רמה של נורמל פורם? הסבירו מדוע
1NF holds, values are atomic.
2NF fails, since D is non prime and depends on a subset (E,F) of (A,E,F) which is a candidate key.
שאלה 5
איזה מבין המשפטים הבאים אינו נכון:
1. ברדיס אפשר ליצור כניסה שהיא עצמה טבלת גיבוב.
2. ברדיס יש פקודות לאחזור חלקים ממסמך.
3. רדיס תומך ברשימות שאפשר להכניס ערכים גם בהתחלה וגם בסוף.
4. ברדיס יש פקודה שמאפשרת למחוק איברים אוטומטית לאחר מספר שניות.
2. ברדיס יש פקודות לאחזור חלקים ממסמך.
שאלה 6
נתונות שתי הטבלאות הבאות:
T1 defined as: CREATE TABLE T1 (A INT, B INT, C INT, D INT, PRIMARY KEY((A, B), C, D));
T2 defined as: CREATE TABLE T2 (A INT, B INT, C INT, D INT, PRIMARY KEY(A, B, C));
לכל אחת מהשאילתות הבאות כיתבו האם היא חוקית, לא חוקית, או בכלל לא בסינטאקס חוקי לCQL.
a. SELECT B FROM T1 WHERE A=345
b. SELECT C FROM T2 WHERE A=354
c. SELECT D FROM T1 WHERE A=345 AND B=756
d. SELECT * FROM T2 WHERE A=345 INNER JOIN T1 ON T1.C=T2.C
e. SELECT * FROM T1 WHERE C<100 AND A=765 AND B=192
a. SELECT B FROM T1 WHERE A=345 __illegal__
b. SELECT C FROM T2 WHERE A=354 _legal___
c. SELECT D FROM T1 WHERE A=345 AND B=756 __legal___
d. SELECT * FROM T2 WHERE A=345 INNER JOIN T1 ON T1.C=T2.C _syntax___
e. SELECT * FROM T1 WHERE C<100 AND A=765 AND B=192 __legal__
שאלה 7
כתבו שאילתא ב-Cypher שמחזירה את כל החברים של Gal Gazit, כל החברים שלהם וכל החברים שלהם שצפו בסרט Harry Potter. (הניחו כי FRIEND ו-WATCHED הם יחסים בין nodes ב-graph).
match (n)-[:friend*..3]->(m:Person{name: “Gal Gazit”}),(n)-[:watched]-(p:Movie{name:”Harry Potter”}) return distinct n
שאלה 9
כתבו את כל הסיבות מדוע ה-XML הבא אינו תקין:
<cleaning importance=”high”>
<kitchen>
<bath>
</kitchen>
</bath>
<cleaning>
<shoppinglist>
<apples />
<elephants>
</shoppinglist>
no closing tag for <cleaning> (there is another open tag and no closing tag for both of them), <bath> is declared before </kitchen> and closed after it, <elephants> has no closing tag_
שאלה 10
כתבו פונקצית רדיוס בג'אוה סטרימז (JAVA Streams) שמקבלת מספרים ומחזירה את המכפלה של כל המספרים ההופכיים להם.
_reduce(1, (x,t)->1/x, (x,y)->x*y)
שאלה 11
נתון קוד בפייטון (python) שסופר את כל התווים ב"text_file":
count = text_file.flatMap(lambda s: list(s)) \
.map(lambda x: (x, 1)) \
.reduceByKey(lambda a, b: a + b)
print(count.sortByKey(False).collect())
איך תשנו את הקוד כדי שיתעלם מכל הרווחים?
count = text_file.flatMap(lambda s: list(s))
.map(lambda x: (x, 1)) .filter(lambda v:v[0]!=’ ‘)
.reduceByKey(lambda a, b: a + b)
שאלה 12
בהמשך לשאלה הקודמת, איך תשנו את הקוד כך שיספור את כל המילים שיש בהן שלושה תווים?
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local[*]").setAppName("Lab 6")
sc = SparkContext(conf=conf)
rawData = sc.textFile("text_file.txt")
count = rawData.map(lambda s: s.replace(' ',")).flatMap(lambda s: zip(list(s),list(s)[1:],list(s)[2:])).map(lambda x: (".join(x),1)).reduceByKey(lambda x,y: x+y)
print(count.sortByKey(False).collect())
שאלה 13
בהמשך לשאלה הקודמת, איך תשנו את הקוד כך שיציג את קודם את המילים השכיחות ביותר?
print(count.sortBy(lambda x: x[1], ascending=False).collect())
שאלה 14
איזה מבין המשפטים הבאים נכון
1. לפי ההנחה של Naive Bayes ההסתברות של כל מילה בהודעה תלויה רק במילים אחרות שמופיעות בהודעה.
2. לפי ההנחה של Naive Bayes ההסתברות של כל מילה בהודעה תלויה רק במחלקה של המשפט.
3. לפי ההנחה של Naive Bayes ההסתברות של כל מילה בהודעה תלויה גם במילים אחרות שמופיעות בהודעה וגם במחלקה.
4. לפי ההנחה של Naive Bayes ההסתברות של כל מילה בהודעה בלתי תלויה במילים אחרות שמופיעות בהודעה ובלתי תלוי במחלקה.
2. לפי ההנחה של Naive Bayes ההסתברות של כל מילה בהודעה תלויה רק במחלקה של המשפט.
שאלה 15
זכרו שההיפותזה של הרגרסיה הלינארית היא: h(x) = xw + b
נתון:
x = [3, 4, -2, -3]
y = [1, 2, -1, -2]
מה הטעות כאשר w=0,b=0?
שאלה 16
בהתבסס על הנתונים בשאלה הקודמת, מצאו w וb עם טעות קטנה יותר (לא בהכרח המינימלית).
w=0.5, b=0
שאלה 17
באילו מהמקרים נשתמש ברגרסיה לוגיסטית?
1. ניבוי מחיר בית בהינתן גודל הבית ומיקומו.
2. ניבוי גודל הבית בהינתן מחיר הבית ומיקומו.
3. ניבוי זמן ההגעה של חבילה בהינתן המקור ממנו נשלח והמקום אליו נשלח, זמן המשלוח וגודל החבילה.
4. ניבוי האם סטודנט/ית תואר ראשון יגיש/תגיש מועמדות לתואר שני בהינתן ציוניו/ה.
4. ניבוי האם סטודנט/ית תואר ראשון יגיש/תגיש מועמדות לתואר שני בהינתן ציוניו/ה.