מסדי נתונים תשס " ג 1 More on SQL קורס מסדי נתונים.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

ממיבחניםC שאלות ++.
מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
טבלאות סמלים נכתב ע"י אלכס קוגן סמסטר חורף, תשס"ח.
אקסס מבוא למערכות מידע.
מתמטיקה בדידה תרגול 3.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
מסדי נתונים תשס " ג 1 תכנון סכמות (Design Theory) מסדי נתונים.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
SQL 2 – The Sequel R&G, Chapter 5 Lecture 10. Administrivia Homework 2 assignment now available –Due a week from Sunday Midterm exam will be evening of.
1 SQL (Simple Query Language). 2 Query Components A query can contain the following clauses –select –from –where –group by –having –order by Only select.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
1 Views and Null values. 2 What does this return? SELECT B.bid, COUNT(*) FROM Boats B, Reserves R WHERE R.bid=B.bid and B.color=‘red’ GROUP BY B.bid For.
מסדי נתונים תשס " ג 1 תכנון סכמות – אלגוריתם פירוק לתבניות בצורת BCNF מסדי נתונים.
שאילת שאלות שאלת חקר המפתח למנעול 1. שאילת שאלות – שאלת חקר מה ניתן לשנות ? :  בתנאים : טמפ ' או לחץ או הכלים, או הציוד  בחומרים : איכות או כמות או.
1 מבוא למדעי המחשב ביטויים. 2 ביטויים expressions ביטויים (expressions) הינם יצורים תחביריים בעלי טיפוס וערך. הגדרה אינדוקטיבית של ביטויים : קבועים הם.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מבני בקרה מבוא לתכנות למנע " ס - שבוע מספר 3 - מאיר קומר - סמסטר ב ' - תשס " ו הסתעפות “ אם השמאל ואימנה ואם הימין ואשמאילה ”
חורף תשס " ג DBMS , שפות שאילתה : SQL ( א ') 1 סכמה SQL: מושגים טבלה, רלציה שורה, רשומה, n- יה עמודה, תכונה, שדה, אטריביוט.
תחשיב הפסוקים חלק ג'. צורות נורמליות א. DF – Disjunctive Form – סכום של מכפלות. דוגמא: (P  ~Q  R)  (R  P)  (R  ~Q  ~P) הגדרה: נוסחה השקולה לנוסחה.
Backpatching 1. תזכורת מתרגול קודם קוד ביניים - שפת הרביעיות שיטות לייצור קוד ביניים –שימוש בתכונת code –כתיבה ישירה ל-buffer של פקודות שיטות לתרגום מבני.
מערכות הפעלה ( אביב 2009) חגית עטיה ©1 מערכת קבצים log-structured  ה log הוא העותק היחיד של הנתונים  כאשר משנים בלוק (data, header) פשוט כותבים את הבלוק.
DBMS , שפות שאילתה: SQL (ב')
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
1 Views. 2 Views A view is a "virtual table" defined using a query You can use a view as if it were a table, even though it doesn't contain data The view.
1 Triggers. 2 What is a Trigger? A trigger is a PL/SQL block that is automatically called when certain events occur in the database. Triggers can be made.
1 Views. 2 What are views good for?(1) Simplifying complex queries: we saw one example. Here is another example that allows the user to "pretend" that.
מבני בקרה לולאות. שאלה #1 שאלה ב' – תכתוב תוכנה הכותבת את תפריט הבאה Type 1 to find the area of a circle Type 2 to find the circumference of a circle.
חורף - תשס " ג DBMS, שפות שאילתא : SQL ( ג ') 1 שינוי מסד הנתונים - פעולות DDL, DML פעולות ב -SQL: שאילתות שינוי תוכן מסד נתונים ( עדכון, הוספה.
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
1 The Oracle Database System Querying the Data Database Course The Hebrew University of Jerusalem.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
1 Views. 2 What are views good for? (1) Simplifying complex queries: We saw one example. Here is another that allows the user to "pretend" that there.
עקרון ההכלה וההדחה.
1 Moving a Java Program into a Database. 2 Motivation We would like to be able to run a Java program from within Oracle. This will allow us to: –call.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
1 compute תנאים פשוטים בעזרת compute לוגי לדוגמא: compute q1 = w > 80. Freq var = q1.
1 חישוב של אופרטורים רלציוניים Evaluation of Relational Operators.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
1 SQL/ DML Structured Query Language Data Manipulation Language (DML) is used to query and update data מהדורה 02.
הרצאה 3 מבוא למדעי המחשב לתעשייה וניהול הודעות : הודעות : או דרך moodle – ושם לפנות ל : אתר מכון טל החומר.
The Oracle Database System. Connecting to the Database At the command line prompt, write: sqlplus In the beginning your password.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
2003B Q5 Suppliers(sid, sname, city) Select sid from suppliers where city=‘jerusalem’ or sname like ‘%Smith’ Select sid from suppliers where city=‘jerusalem’
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
1 Triggers. 2 PL/SQL reminder We presented PL/SQL- a Procedural extension to the SQL language. We reviewed the structure of an anonymous PL/SQL block:
Spring 2011 ITCS3160: Database Design and Implementation Hands-on Learning.
Structured Query Language
Computer Architecture and Assembly Language
Formal Specifications for Complex Systems (236368) Tutorial #1
SQL בסיסי – הגדרה אינדוקטיבית
עבודה עם נתונים באמצעות ADO.NET
CS 405G: Introduction to Database Systems
Based on the lecture notes of Prof. Sagiv
טבלאות מדומות (Views).
איתור נתונים מתקדם, בעזרת vlookup וחברים
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

מסדי נתונים תשס " ג 1 More on SQL קורס מסדי נתונים

מסדי נתונים תשס " ג 2 טיפול בהפרת אילוץ טיפול בהפרת אילוץ מוגבל לארבעה הבאים : 1.on action set null 2.on action set default 3.on action no action 4.on action cascade Actions: insert, update, delete Number 3 (no action) is the default

מסדי נתונים תשס " ג 3 דוגמה CREATE TABLE Reserves ( sid INTEGER, bid INTEGER, day DATE, FOREIGN KEY (sid) REFERENCES Sailors ON DELETE CASCADE ON UPDATE SET NULL, FOREIGN KEY (bid) REFERENCES Boats ON DELETE SET DEFAULT ON UPDATE NO ACTION );

מסדי נתונים תשס " ג 4 Triggers טיפול בהפרת אילוצים הוא מוגבל הגדרת אילוצים היא מוגבלת ניתן לייצר פרוצדורות ב -PL/SQL פרוצדורות משוכנות במסד הנתונים וניתן להפעיל אותן על ידי קריאה להן Triggers משמשים לקריאה לפרוצדורה כתוצאה של ' אירוע ' מסוים

מסדי נתונים תשס " ג 5 פעולת Trigger ניתן להפעיל Trigger בעקבות אירוע של הכנסת רשומה (insert), ביטול רשומה (delete) ועדכון (update) ניתן לקרוא לפרוצדורה על ידי ה -Trigger לפני או אחרי או במקום הפעולה ניתן לקרוא לפרוצדורה עבור כל ביצוע פעולה וניתן לקרוא לפרוצדורה עבור כל ביצוע שינוי ברשומה

מסדי נתונים תשס " ג 6 צורה כללית של Trigger CREATE [or REPLACE] TRIGGER trig_name {BEFORE | AFTER | INSTEAD OF} {DELETE | INSERT | UPDATE [of column [, column]...] } [or {DELETE | INSERT | UPDATE [of column [, column]...] }...] on {table_name | view_name} FOR EACH {ROW | STATEMENT} [WHEN (condition)] PL/SQL block

מסדי נתונים תשס " ג 7 גיבוי נתונים CREATE TRIGGER backup_sailors_trig AFTER UPDATE of Rating on Sailors FOR EACH ROW WHEN (old.rating < new.rating) BEGIN INSERT INTO Sailors_Backup VALUES (:old.sid, :old.sname, :old:age, :old:rating); END / מדוע AFTER?

מסדי נתונים תשס " ג 8 שמירת סגנון (Upper Case) CREATE TRIGGER upper_case_program_type_trig BEFORE INSERT or UPDATE on Program_Variables FOR EACH ROW BEGIN :new.type := UPPER(:new.type); END / מדוע BEFORE?

מסדי נתונים תשס " ג 9 קריאה לפרוצדורה CREATE TRIGGER notify_ta_trig AFTER INSERT or UPDATE or DELETE on Db_Grades FOR EACH STATEMENT WHEN(User <> ‘ db ’ ) BEGIN call send (User || ‘ trying to access table Db_Grades ’ ); END /

מסדי נתונים תשס " ג 10 פעולות שינוי על תצפיות (views)

מסדי נתונים תשס " ג 11 שינוי טבלאות בסיס דרך תצפית מעונינים בפעולות שינוי (insert, update, delete) על תצפיות (views) המערכת מאפשרת ביצוע פעולות השינוי רק כאשר מתקיימים תנאים מסוימים שיפורטו להלן

מסדי נתונים תשס " ג 12 תנאים להפעלת שינוי על view 1. על ה -view להיות מוגדר על טבלה יחידה 2. לא ניתן לבצע פעולת הוספה (insert) אם טבלת הבסיס מכילה עמודות שאינן מופיעות ב -view ושמוגדרות לא לקבל ערכי null 3. לא ניתן לבצע פעולת הוספה (insert) או פעולת עדכון (update) אם עמודות ה -view שפקודה מתייחסת אליהן מכילות ביטוי חשבוני או פונקציה 4. לא ניתן לבצע פעולת שינוי (insert, update, delete) על view שמכיל group by 5. לא ניתן לבצע פעולת שינוי (insert, update, delete) על view שמכיל distinct

מסדי נתונים תשס " ג 13 הכנסת נתונים לתצפיות המבוססות על מספר טבלאות במקרים מסוימים ניתן לבצע הכנסת נתונים ל -view שמוגדר על יותר מטבלה אחת המערכת (Oracle) קובעת אילו טבלאות משמרות מפתח ב -view אם ה -view כולל מספיק אטריביוטים מהטבלה שאליה הנתונים מוכנסים לזיהוי המפתח הראשי של הטבלה ניתן להכניס שורה לטבלה דרך ה -view בהמשך נראה צורה טובה יותר לטיפול בבעיה !

מסדי נתונים תשס " ג 14 הוספת שורות חוקית CREATE VIEW OldSailors as SELECT * FROM Sailors WHERE age > 50; INSERT INTO OldSailors(sid,sname,age,rating) VALUES(12, ‘ Joe ’,51,10); INSERT INTO OldSailors(sid,sname,age,rating) VALUES(12, ‘ Mary ’,49,10);

מסדי נתונים תשס " ג 15 הוספת שורות לא חוקית CREATE VIEW SailorsInfo as SELECT sname, rating FROM Sailors WHERE age>50; INSERT INTO SailorsInfo VALUES( ‘ Joe ’,10); לא חוקי!

מסדי נתונים תשס " ג 16 עדכון חוקי CREATE VIEW SailorsInfo as SELECT sname, rating FROM Sailors WHERE age>50; UPDATE SailorsInfo SET rating = 6 WHERE sname = ‘ Joe ’ ; UPDATE Sailors SET rating = 6 WHERE sname = ‘ Joe ’ and age>50;

מסדי נתונים תשס " ג 17 עדכון לא חוקי CREATE VIEW SailorsInfo2 as SELECT sname, rating + age as ra FROM Sailors WHERE age>50; UPDATE SailorsInfo2 SET ra = 37 WHERE sname = ‘ Joe ’ ; לא חוקי!

מסדי נתונים תשס " ג 18 ביטול שורות חוקי CREATE VIEW SailorsInfo2 as SELECT sname, rating + age as ra FROM Sailors WHERE age>50; DELETE FROM SailorsInfo2 WHERE sname = ‘ Joe ’ and ra = 56; DELETE FROM Sailors WHERE sname = ‘ Joe ’ and (rating + age) >50 and age > 50;

מסדי נתונים תשס " ג 19 דוגמאות נוספות UPDATE OldSailors SET rating = 10; DELETE FROM OldSailors; UPDATE OldSailors SET age = age +1 WHERE age <= 50; מה יקרה ?

מסדי נתונים תשס " ג 20 שילוב של Triggers עם Views נניח שנתון היחס הבא המכיל הערכות של סטודנטים לקורסים שהם לקחו ( כל השדות not null) Recommend(login, course, rating) מוגדרות שתי התצפיות הבאות : – ציוני קורסים Ratings(course, rating) – ציונים שנתן המשתמש הנוכחי לקורסים User_Ratings(course, rating)

מסדי נתונים תשס " ג 21 ה -Views CREATE View User_Ratings as SELECT course, rating FROM Recommend WHERE login = user; CREATE View Ratings as SELECT course, rating FROM Recommend;

מסדי נתונים תשס " ג 22 הכנסת נתונים לא ניתן לבצע הכנסת נתונים ישירה לטבלת Recommends כי לסטודנטים לא נתונות ההרשאות לכך לא ניתן להשתמש בתצפיות להכנסת הנתונים כי השדה login מוגדר כ -not null CREATE TRIGGER insert_rating INSTEAD of INSERT on User_Ratings for each row begin insert into Recommend(login, course, rating) values(User, :new.course, :new.rating); end;

מסדי נתונים תשס " ג 23 שימוש ב -Triggers לשינוי Views מורכבים Oracle לא מאפשר הכנסת נתונים ליותר מטבלה אחת דרך התצפית Oracle מרשה הכנסת נתונים לתצפיות שמבוססות על מספר טבלאות בעזרת Triggers CREATE VIEW SailorsReserves as SELECT S.sid, sname, rating, age, bid, date FROM Sailors S, Reserves R WHERE S.sid = R.sid;

מסדי נתונים תשס " ג 24 לא ניתן לבצע הכנסת נתונים ישירות לתצפית מורכבת זו הכנסת נתונים לא חוקית כי מנסים להכניס נתונים לתצפית שמבוססת על שתי טבלאות בנוסף, אין כאן ערך עבור sid של היחס Reserves אבל עמודה זו מוגדרת כ -not null בהיותה חלק מהמפתח הראשי של Reserves INSERT INTO SailorsReserves(sid,sname,rating,age,bid,date) VALUES (1, ’ Joe ’, 10, 50, 103, ’ ’ );

מסדי נתונים תשס " ג 25 שימוש ב -Trigger להכנסת הנתונים CREATE TRIGGER insert_sailors_reserves_trig INSTEAD of INSERT on SailorsReserves for each row begin insert into Sailors(sid, sname, rating, age) values(:new.sid, :new.sname, :new.rating, :new.age); insert into Reserves(sid, bid, date) values(:new.sid, :new.bid, :new.date); end;

מסדי נתונים תשס " ג 26 טיפול בערכי Null

מסדי נתונים תשס " ג 27 מה קורה בשאילתות המכילות ערכי null? כל פעולה אריתמטית (+,-,*,/,...) שאחד הצדדים בה שווה ל -null מחזירה null הערכת ביטויים לוגיים נעשית בעזרת לוגיקה של שלושה ערכים (three-valued logic) הכוללת את ערכי האמת : True, False, Unknown כל השוואה (=,,<>, =) שלפחות אחד הצדדים בה ערכו null מחזירה ערך Unknown

מסדי נתונים תשס " ג 28 דוגמא נניח שמתקיים שהערך של משתנה x הוא null מה יהיה הערך של הביטויים הבאים ? –x = 3 –null = 3 –x = x –null = null –x * 0 –null * 0

מסדי נתונים תשס " ג 29 לוגיקה של שלושה ערכים נותנים את הערך 1 ל -True, את הערך 0 ל - False ואת הערך 0.5 ל -Unknown פעולת and מחזירה את הערך המינימלי מבין שני הערכים הנתונים פעולת or מחזירה את הערך המקסימלי מבין שני הערכים הנתונים פעולת not מחזירה 1-value כאשר value הוא הערך הנתון

מסדי נתונים תשס " ג 30 שאילתות SQL שאילתות SQL פוסלות ב -Where את כל השורות שעבורן התנאי אינו מחזיר ערך אמת True שאילתות SQL פוסלות ב -Having את כל הקבוצות שעבורן התנאי אינו מחזיר ערך אמת True ניתן לבדוק האם תכונה מקבלת ערך null על ידי התנאי A IS NULL – או התנאי המשלים A IS NOT NULL

מסדי נתונים תשס " ג 31 מניעת איבוד מידע מעונינים במידע על שייטים והזמנות שהם ביצעו מעונינים שהמידע יכלול גם שייטים שלא ביצעו הזמנות SELECT S.sname, R.bid FROM Sailors S, Reserves R WHERE S.sid = R.sid(+) כל שורה מ -Sailors שלא מתחברת לאף שורה מ - Reserves תופיע בתוצאה עם ערכי null בעמודות Reserves

מסדי נתונים תשס " ג 32 מה תיתן השאילתה הבאה ? SELECT S.sname, R.bid FROM Sailors S, Reserves R WHERE S.sid = R.sid(+) UNION SELECT S.sname, R.bid FROM Sailors S, Reserves R WHERE R.sid = S.sid(+)

מסדי נתונים תשס " ג 33 פעולות על רב - קבוצות ( שקים )

מסדי נתונים תשס " ג 34 רב קבוצות ( שקים ) רב - קבוצות (multi-sets) או שקים (bags) הן קבוצות שיש בהן חזרות של איברים טבלה ב -Oracle היא למעשה רב קבוצה ולא קבוצה מדוע מערכות מסחריות מממשות יחסים כרב - קבוצות ולא כקבוצות ?

מסדי נתונים תשס " ג 35 פעולות תואמות לפעולות על קבוצות לפעולות על קבוצות ב -Oracle יש פעולות תואמות : Union – Union All Minus – Minus All Intersect – Intersect All Union – Union All Minus – Minus All Intersect – Intersect All

מסדי נתונים תשס " ג 36 שקים לדוגמאות R(A,B) = {(1,2), (3,4), (1,2), (1,2)} S(A,B) = {(1,2), (3,4), (3,4), (5,6)}

מסדי נתונים תשס " ג 37 סמנטיקת שקים איחוד בסמנטיקת שקים : – אם שורה מופיעה n פעמים בטבלה R ו -m פעמים בטבלה S היא תופיע m+n פעמים באיחוד הטבלאות – דוגמה : R union all S = {(1,2), (1,2), (1,2), (1,2), (3,4), (3,4), (3,4), (5,6)} R union all S = {(1,2), (1,2), (1,2), (1,2), (3,4), (3,4), (3,4), (5,6)}

מסדי נתונים תשס " ג 38 סמנטיקת שקים חיתוך בסמנטיקת שקים : – אם שורה מופיעה n פעמים בטבלה R ו -m פעמים בטבלה S היא תופיע min(m,n) פעמים בחיתוך הטבלאות – דוגמה : R intersect all S = {(1,2), (3,4)}

מסדי נתונים תשס " ג 39 סמנטיקת שקים הפרש בסמנטיקת שקים : – אם שורה מופיעה n פעמים בטבלה R ו -m פעמים בטבלה S היא תופיע max(0,n-m) פעמים בהפרש של R ו -S – דוגמה : R minus all S = {(1,2), (1,2)} S minus all R = {(3,4), (5,6)}