236363 מערכות מסדי נתונים

48
1 236363 םםםםםם םםםם םםםםםם11 . םםםםODL - םOQL םםםםםם םםםםם םםםםם םםםםם: םםםם םםםםםםם םםםםם םםםםםםם: םםםם םםםם

description

236363 מערכות מסדי נתונים. 11 . שפות ODL ו- OQL ותכנון מכוון עצמים שקפים: עודד סודרסקי עריכה והתאמות: אלדר פישר. המודל מכוון העצמים למסדי נתונים. פרט למודל הרלציוני למסדי נתונים, קיימים מודלים נוספים: מודלים ישנים יותר, שבהם הקשר בין הרשומות מתקבל ע"י מצביעים ולא ע"י ערכים משותפים: - PowerPoint PPT Presentation

Transcript of 236363 מערכות מסדי נתונים

Page 1: 236363 מערכות מסדי נתונים

1

236363מערכות מסדי נתונים

OQL ו-ODLשפות . 11ותכנון מכוון עצמים

שקפים: עודד סודרסקיעריכה והתאמות: אלדר פישר

Page 2: 236363 מערכות מסדי נתונים

2

המודל מכוון העצמים למסדי נתוניםפרט למודל הרלציוני למסדי נתונים, קיימים מודלים נוספים:•

רשומות מתקבל ע"י הקשר בין הישנים יותר, שבהם מודלים –מצביעים ולא ע"י ערכים משותפים:

(hierarchical –מדרגי )היררכי•(networkרשת )•

מודל חדש יותר:–(object-orientedמכוון-עצמים )•

המודל מכוון העצמים דומה למודל הרלציוני, בתוספת רעיונות •מתכנות מכוון עצמים.

מודל זה עדיין אינו מבוסס וסטנדרטי כמו המודל הרלציוני.•

Page 3: 236363 מערכות מסדי נתונים

3

ODLמבוא :

ERD היא שיטת מידול; לאחר מידול מסד הנתונים יש לתרגם

ספציפי, למשל מודל היחסים DBMS עבור מודל DDLאותו ל-

(.ת)רלציו

יכולה לשמש )ODL )Object Definition Languageלעומת זאת, למסד נתונים מכוון-עצמים.DDLגם כשיטת מידול וגם כ-

IdeasERD

ODL

Relations

Object-oriented DBMS

Relational DBMS

Page 4: 236363 מערכות מסדי נתונים

4

ODL( מחלקות :classes)

או למחלקה ERD שקולה לישות ב-ODL ב-(classמחלקה )

:interfaceבתכנות מכוון-עצמים. היא מיוצגת ע"י הצהרת

interface Movie {

};

קשרים ,(attributesתכונות )למחלקה יכולים להיות

(relationships), במקרה של וOQL גם ( שיטותmethods).

Page 5: 236363 מערכות מסדי נתונים

5

ODLתכונות : היא שדה של מחלקה:(attributeתכונה )

interface Movie {attribute string title;attribute integer year;attribute integer length;attribute enum Film {color, blackAndWhite} filmType;

};

)"Gone With the Wind", 1939, 231, color( שורה לדוגמא:

interface Star { דוגמא עם תכונה מרוכבת:attribute string name;attribute Struct Addr {string street, string city} address;

};

Page 6: 236363 מערכות מסדי נתונים

6

ODL תכונות : 2כל תכונה יכולות להיות מטיפוס בסיסי או מרוכב.

(:atomicטיפוסים בסיסיים )–

integer, real, char, string, bool

enum TypeName {val0, val1, …}

(:structuredטיפוסים מרוכבים )–

Set<type>, Bag<type>,

List<type>, Array<type, size>

Struct TypeName {type1 field1, type2 field2, …}

Page 7: 236363 מערכות מסדי נתונים

7

ODL תכונות : 3מותר:

(integer, real, char, string, bool, enumטיפוס בסיסי )–

(Structתכונה עם תת תכונות )–

( של הנ"לSet, Bag, List, Arrayאוסף )–

אסור:

אוסף של אוסף–

–Structעם אוסף בתוכו

Page 8: 236363 מערכות מסדי נתונים

8

ODLמפתחות : הוא תכונה, או קבוצת תכונות, שמזהה עצמים (keyמפתח )

:ערכי מהמחלקה באופן חדinterface Movie )key )title, year(( {

attribute string title;attribute integer year;attribute integer length;attribute enum Film {color, blackAndWhite} filmType;

}; ושונים באחת התכונות year וב-titleלא ייתכנו שני סרטים זהים ב-

האחרות.

אפשר להגדיר מפתחות אחדים:interface Movie )key )title, year(, movieID(

Page 9: 236363 מערכות מסדי נתונים

9

ODLקשרים : מבטא יחס בין מחלקות.(relationshipקשר )

:חד-ערכיקשר interface Movie {

relationship Star starOf;};

לכל סרט יש כוכב אחד לכל היותר.

:רב-ערכיקשר interface Movie {

relationship Set<Star> stars;};

לסרט יכולים להיות מספר כוכבים.

Page 10: 236363 מערכות מסדי נתונים

10

ODLקשרים : 2מותר:קשר חד-ערכי–(Set, Bag, List, Arrayקשר רב-ערכי ע"י אוסף )–

אסור:אוסף של אוסף–, בפרט אין קשרים עם תכונות או Structקשר עם –

קשרים בין יותר משתי מחלקות

Page 11: 236363 מערכות מסדי נתונים

11

ODLקשרים הפוכים :הקשר בד"כ נרצה לשמור, לכל קשר בין שתי מחלקות, גם את

לדוגמא:(.inverse relationshipההפוך )

interface Movie {

relationship Set<Star> stars inverse Star::starredIn ;

};

interface Star {

relationship Set<Movie> starredIn inverse Movie::stars ;

};

זהו קשר רבים-לרבים בין סרטים לבין כוכבים.

Page 12: 236363 מערכות מסדי נתונים

12

ODLקשרי אחד-לרבים, אחד-לאחד ::אחד- לרבים. כך ניתן להגדיר קשר חד-ערכי הוא ><Setכפי שראינו, קשר ללא

interface Studio {

relationship Set<Movie> owns inverse Movie::ownedBy;

};

interface Movie {

relationship Studio ownedBy inverse Studio::owns;

};

:אחד-לאחדאו

interface President {

relationship Studio runs inverse Studio::runBy;

};

interface Studio {

relationship President runBy inverse President::runs;

};

Page 13: 236363 מערכות מסדי נתונים

13

ODL( ירושה :inheritance)

מאפשרת להגדיר מחלקה מסוימת (inheritanceירושה )

כתת-מחלקה של מחלקה אחרת:

interface Cartoon: Movie {

relationship Set<Star> voices;

};

Cartoon יורש את כל התכונות והקשרים של Movie ,

. Star למחלקה voicesערכי -ובנוסף יש לו את הקשר הרב

Page 14: 236363 מערכות מסדי נתונים

14

ODLירושה מרובה : מאפשרת לרשת משתי (multiple inheritanceירושה מרובה )

מחלקות או יותר:interface MurderMystery: Movie {

attribute string weapon;};Interface Cartoon-MurderMystery:

Cartoon, MurderMystery{ };

Cartoon-MurderMystery יורש את כל התכונות והקשרים של Cartoon ושל MurderMystery. הוא יורש בעקיפין גם את כל

.רק פעם אחת, אבל Movieהתכונות והקשרים של

במקרה שיורשים מאבות שונים תכונות או קשרים בעלי שם זהה וטיפוסים שונים, התוצאה אינה מוגדרת.

Page 15: 236363 מערכות מסדי נתונים

15

: קשרים לא בינרייםODL ל-ERDמ-קשר בין יותר משתי ישויות )או קשר עם תכונות(:

:ODLיש להפוך את הקשר לישות, ואז לתרגם ל-

interface InCharge {relationship Teacher teacher;relationship Course course;relationship Semester semester;

};

teacher course

semester

in charge

teacher course

semester

in charge

Page 16: 236363 מערכות מסדי נתונים

16

: ישויות חלשות?ODL ל-ERDמ-

weak לא קיימות ישויות חלשות )ODL, ב-ERלעומת מודל

entities-זאת מפני שלכל עצם ב .)ODL :יש זיהוי ייחודי משלו

הכתובת שבה הוא מאוחסן. לכן אפשר להבדיל בין שני

עצמים מאותה מחלקה גם אם יש להם אותם ערכים לכל

התכונות.

, לעומת זאת, הישויות מזוהות רק ע"י ערכי התכונות.ERב-

כאילו היא ישות ODL תתורגם ל-ERD ישות חלשה ב-

רגילה.

Page 17: 236363 מערכות מסדי נתונים

17

: מח', תכונות בסיסיותERD ל-ODLמ-לא הכל ניתן לתרגום!

ERD מתורגמת לישות ב-ODLמחלקה ב-

ERDתכונה מטיפוס בסיסי מתורגמת לתכונה ב-

ERD מתורגם למפתח ב-ODLאחד המפתחות ב-

interface Movie )key )title, year(( {

attribute string title;

attribute integer year;

attribute integer length;

attribute enum Film {color, blackAndWhite} filmType;

};

Movie

title

year

length

type

Page 18: 236363 מערכות מסדי נתונים

18

Struct: תכונות ERD ל-ODLמ- מתורגמת למספר תכונות ODL ב-Structתכונה מטיפוס

, או לתכונה מרוכבת.Struct, כמספר השדות ב-ERDב-

interface Star )key name( {

attribute string name;

attribute Struct Addr

{string street, string city} address;

};

או

Star

name street

city

Star

name Addr

street

city

Page 19: 236363 מערכות מסדי נתונים

19

Set: תכונות ERD ל-ODLמ- מתורגמת לתכונה רב-ערכית בתרשים Setתכונה מטיפוס

.ERה-

interface Company )key id( {

attribute integer id;

attribute string name;

attribute Set<Struct Addr{string street,

string city}> addresses;

};

Star

name Addr

street

city

Page 20: 236363 מערכות מסדי נתונים

20

Bag : תכונות ERD ל-ODLמ- אין אלא לתרגם לישות חלשה נפרדת, עם Bagתכונה מטיפוס

תכונה נוספת עבור מספר ההופעות.

המפתח: כל שדות התכונה )לא כולל מס' ההופעות(.

interface Company )key id( {

attribute integer id;

attribute string name;

attribute Bag<integer> phones;

};

Company

id name

phone

countnumber

Page 21: 236363 מערכות מסדי נתונים

21

List : תכונות ERD ל-ODLמ- גם מתורגמת לישות חלשה נפרדת, עם Listתכונה מטיפוס

.סידוריהתכונה עבור המספר

, ולא השדות המקוריים.המספר הסידוריהמפתח:

interface Company )key id( {

attribute integer id;

attribute string name;

attribute List<Struct Addr{string street,

string city}> addresses;

};

Company

id name

address

street

position

city

Page 22: 236363 מערכות מסדי נתונים

22

Array : תכונות ERD ל-ODLמ-, או ע"י חזרה על התכונה List מטופלת כמו Arrayתכונה מטיפוס

.)אם המערך קטן יחסית(

interface Company )key id( {

attribute integer id;

attribute string name;

attribute Array<integer, 2> phones;

};

או

Company

id name phone1

phone2

Company

id name

phone

number

position

Page 23: 236363 מערכות מסדי נתונים

23

: קשריםERD ל-ODLמ-interface President {

relationship Studio runs inverse Studio::runBy;};interface Studio {

relationship President runBy inverse President::runs;relationship Set<Movie> owns inverse Movie::ownedBy;

};interface Movie {

relationship Studio ownedBy inverse Studio::owns;relationship Set<Star> stars inverse Star::starredIn;

};interface Star {

relationship Set<Movie> starredIn inverse Movie::stars;};

runs

starredIn

owns

President MovieStudio Star

Page 24: 236363 מערכות מסדי נתונים

24

List: קשרי ERD ל-ODLמ- כמפתח: נוספת תכונת מס' סידוריListלקשר מטיפוס

interface Movie {relationship List<Star> stars inverse Star::starredIn;

};interface Star {

relationship Set<Movie> starredIn inverse Movie::stars;};

interface Movie {relationship List<Star> stars inverse Star::starredIn;

};interface Star {

relationship List<Movie> starredIn inverse Movie::stars;};

position starredIn MovieStar

starPositionstarredIn MovieStar

moviePosition

Page 25: 236363 מערכות מסדי נתונים

25

Bag: קשרי ERD ל-ODLמ-: נוספת תכונת מס' ההופעותBagלקשר מטיפוס

interface Movie {

relationship Bag<Star> stars inverse Star::starredIn;

};

interface Star {

relationship Set<Movie> starredIn inverse Movie::stars;

};

countstarredIn MovieStar

Page 26: 236363 מערכות מסדי נתונים

26

Array: קשרי ERD ל-ODLמ-., או כמס' קשריםList מיוצג כמו Arrayקשר

interface Movie {

relationship Array<Star, 2> stars inverse Star::starredIn;

};

interface Star {

relationship Set<Movie> starredIn inverse Movie::stars;

};

או

position starredIn MovieStar

MovieStarstarredIn1

starredIn2

Page 27: 236363 מערכות מסדי נתונים

27

: ירושהERD ל-ODLמ-:ERD הופכת להפרדה ב-ODL ב-ירושה

interface Movie {

};

interface Cartoon: Movie {

};

Movie

Cartoon

isa

Page 28: 236363 מערכות מסדי נתונים

28

ODLומסדים מכווני עצמים •ODL+OQL אחד המימושים למודל מכוון-העצמים למסדי :

(SQL3נתונים )מימוש אחר:

•ODL )Object-Definition Language(:

או ניתוח תלויות למודל הרלציוניERDשיטת מידול, כמו –

( למודל Data Definition Languageשפת הגדרה )–מכוון-העצמים

Ideas

ERD

ODL

Relations

Object-oriented DBMS

Relational DBMS

attributes+dependencies

Page 29: 236363 מערכות מסדי נתונים

29

interface Movie )extent Movies key )title, year(( {attribute string title;attribute integer year;attribute integer length;attribute enum Film {color,blackAndWhite} filmType;relationship Set<Star> stars inverse Star::starredIn;relationship Studio ownedBy inverse Studio::owns;float lengthInHours)(;stars)out Set<String>(;otherMovies)in Star, out Set<Movie>(

raises)noSuchStar(;};

interface Star )extent Stars key name( {...};interface Studio )extent Studios key name( {...};

ODLתוספות למודל מכוון-העצמים :קבוצת העצמים—שם )סוג העצמים שבקבוצה(מחלקהשם ה

המופע

( עם ערך מוחזר, ללא methodפונקציה )פרמטרים

פונקציה ללא ערך מוחזר, עם פרמטר פלט

פונקציה ללא ערך מוחזר, עם פרמטר חריגקלט, פרמטר פלט, ואפשרות ל

(exception)

Page 30: 236363 מערכות מסדי נתונים

30

OQLמבוא :

•OQL )Object Query Language( שפת שאילתא :

( למודל Data Manipulation Languageועדכונים )

מכוון-העצמים

,++Cמשוכנת בשפת תכנות מכוונת-עצמים, כגון •

Smalltalk או Java

SQL ומ-ODLכוללת אלמנטים מ-•

Page 31: 236363 מערכות מסדי נתונים

31

OQLטיפוסי משתנים וקבועים :.ODL כמו ב-(:atomicבסיסיים )טיפוסים

integer, real, char, string, bool

enum TypeName {val0, val1, …}

.ODL כמו ב-(:structuredמרוכבים )טיפוסים

Set<type>, Bag<type>,

List<type>, Array<type, size>

Struct TypeName {type1 field1, type2 field2, …}

. של אוסףStruct או אבל כאן מותר גם אוסף של אוסף,–

Page 32: 236363 מערכות מסדי נתונים

32

OQLקבועים :מטיפוס בסיסי:

17, 17.5, 'a', "abc", true

מטיפוס מרוכב:

Set(17, 18, 19)

Bag(17, 17, 18)

List("Haifa","Haifa","Tel-Aviv")

Array(5.0, 6.5)

Struct(addr: "1 Main Str., LA", phones: Set(1234, 5678))

Page 33: 236363 מערכות מסדי נתונים

33

OQL).( אופרטור הנקודה :myMovie.lengthגישה לתכונה:•

Movie עצם מהמחלקה myMovieכאשר

myMovie.starsגישה לקשר:•Starמחזיר קבוצה של עצמים מהמחלקה

)myMovie.starNames)myStarsגישה לפונקציה:• את שמות כוכבי הסרט )כקבוצת מחרוזות(myStarsל-מציב

Struct:address.streetגישה לשדה של •

myMovie.ownedBy.address.streetהרכבה:•myMovieהרחוב של האולפן שהוא הבעלים של הסרט

Page 34: 236363 מערכות מסדי נתונים

34

OQLשאילתות בסיסיות ::SQL ל-תחבירית דומות OQLהשאילתות ב-•

SELECT [DISTINCT] ביטוי,...

FROM אוסף [AS] משתנה,...

[WHERE תנאי]

( קיים במסד הנתונים, או extent — מופע )אוסף•

.תת-שאילתא

— מקבל בכל פעם ערך של רשומה אחת מתוך משתנה•

.האוסף

FROM — כוללים קבועים ומשתנים מחלק ה-ביטוי, תנאי•

.)אפשר להשתמש באופרטור הנקודה(

.(DISTINCT אם יש Set )או Bag — התוצאה•

Page 35: 236363 מערכות מסדי נתונים

35

OQLשאילתות בסיסיות—דוגמאות ::השנים שבהן יצא סרט בשם "שר הטבעות"

SELECT m.yearFROM Movies mWHERE m.title = "Lord of the Rings"

:שמות כוכבי הסרטים בשם "לשחרר את ווילי"SELECT s.nameFROM Movies m, m.stars sWHERE m.title = "Free Willy"

:כוכבי הסרטים של אולפן "האחים וורנר"SELECT DISTINCT s.nameFROM Movies m, m.stars sWHERE m.ownedBy.name = "Warner Bros."

Page 36: 236363 מערכות מסדי נתונים

36

OQLטיפוסים מרוכבים בפלט :זוגות של כוכבים שגרים באותה כתובת:

SELECT DISTINCT

Struct)star1: s1, star2: s2(

FROM Stars s1, Stars s2

WHERE s1.addr = s2.addr

AND s1.name < s2.name

טיפוס התוצאה:

Set<Struct N{star1:Star,star2:Star}>

Page 37: 236363 מערכות מסדי נתונים

37

OQLתת-שאילתות :

. יכול להיות גם תת-שאילתאFROMהאוסף ב-

: שמות כוכבי הסרטים של אולפן "פרמונט"דוגמא:

SELECT DISTINCT s.name FROM

(SELECT m FROM Movies m WHERE

m.ownedBy.name="Paramount")

f, f.stars s

Page 38: 236363 מערכות מסדי נתונים

38

OQLסדר התוצאה :הסרטים של אולפן "דיסני", עם מיון ראשוני לפי אורך הסרט

)בסדר יורד( ומיון משני לפי שמו:

SELECT m

FROM Movies m

WHERE m.ownedBy.name = "Disney"

ORDER BY m.length DESC, m.title

(Set או Bag )במקום Listהתוצאה:

Page 39: 236363 מערכות מסדי נתונים

39

OQLכמתים ::WHEREבחלק ה- ∀ אפשר להשתמש גם בכמתים ו- ∃

FOR ALL (משתנה) IN (אוסף): (תנאי)

EXISTS (משתנה) IN (אוסף): (תנאי)

: כוכבי הסרטים של אולפן "קולומביה"דוגמא:

SELECT s FROM Stars s

WHERE EXISTS m IN s.starredIn:

m.ownedBy.name = "Columbia"

: בסרטי "פוקס"רק הכוכבים שהופיעו דוגמא:

SELECT s FROM Stars s

WHERE FOR ALL m IN s.starredIn:

m.ownedBy.name = "Fox"

Page 40: 236363 מערכות מסדי נתונים

40

OQLביטויים סטטיסטיים :•COUNT, MIN, MAX, SUM, AVGשל ערכיםפים פועלים על אוס :

•COUNT עבור ערכים מטיפוס כלשהו —

•MIN, MAX עבור ערכים מטיפוס בר-השוואה —

)כגון מספר או מחרוזת(

•SUM, AVG עבור ערכים מטיפוס מספרי —

: האורך הממוצע של כל הסרטים במסדדוגמא:

AVG(SELECT m.length FROM Movies m)

Page 41: 236363 מערכות מסדי נתונים

41

OQLקיבוץ : הגדרה: אפשר להוסיףSELECT-FROM-WHEREאחרי •

GROUP BY ביטוי:שדה ,....Bags ל-FROM-WHEREמקבץ את הרשומות המתקבלות מ-• כולל את כל הרשומות שיש להן אותם ערכים עבור כל הביטויים Bagכל •

.GROUP BYב-המופיעים .Structs של Setמחזיר •. אחד של רשומותBag מייצג Structכל •.GROUP BY מופיעים כל השדות שב-Structבכל •הוא ערך הביטוי המתאים לשדה )של Structהערך של כל שדה ב-•

.Structהרשומות המיוצג ע"י ה- bag הקיבוץ( עבור.partition שדה בעל השם השמור Structבנוסף, יש בכל • מהצורהStructs של Bag הוא partitionערך השדה •

Struct( רשומה:משתנה ,...)

. והרשומה המתאימה לכל משתנהFROMעם המשתנים המופיעים ב-

Page 42: 236363 מערכות מסדי נתונים

42

OQLקיבוץ : דוגמאאולפן, שנה, וסך אורכי הסרטים שהופקו ע"י האולפן בשנה

זו:

SELECT std, yr,

sumLength: SUM(SELECT p.m.length

FROM partition p)

FROM Movies m

GROUP BY std: m.studio, yr: m.year

Page 43: 236363 מערכות מסדי נתונים

43

OQLקיבוץ : בחירת חלק מהקבוצות.HAVING אפשר להוסיף תנאי GROUP BYאחרי

.SELECTב-כמו הביטויים המופיעים בתנאי

אולפן, שנה, וסך אורכי הסרטים שהאולפן הפיק בשנה זו,דוגמא: האולפן הפיק לפחות סרט אחד של יותר אבל רק אם

:משעתיים בשנה זו

SELECT std, yr, sumLength:SUM(SELECT p.m.length

FROM partition p)

FROM Movies m

GROUP BY std: m.studio, yr: m.year

HAVING MAX(SELECT p.m.length FROM partition p)

> 120

Page 44: 236363 מערכות מסדי נתונים

44

OQLאופרטורים מתורת הקבוצות : אפשר להפעיל את האופרטוריםSetsבין שני

UNION )U(, INTERSECT )∩(, EXCEPT)–(

: הופקו ע"י "מ.ג.מ."לא כל סרטי הריסון פורד שדוגמא:(SELECT DISTINCT m FROM Movies m, m.stars sWHERE s.name = "Harrison Ford")EXCEPT (SELECT DISTINCT m FROM Movies mWHERE m.ownedBy.name = "MGM")

: היא(, המשמעותSet ל-Bag )או בין Bagsבין שני –UNION -סכום מספרי ההופעות בשני הBags–INTERSECT -מינימום מספרי ההופעות בשני הBags–EXCEPT -הפרש מספרי ההופעות בשני הBags אך לא(

(0פחות מ-

Page 45: 236363 מערכות מסדי נתונים

45

OQLשיכון בשפה מארחת : בשפת תכנות מכוונת-עצמים OQLאפשר לשכן שאילתות

.++Cמארחת, למשל

השמה למשתנה של השפה המארחת:

Set<Movie> oldMovies;

oldMovies = SELECT DISTINCT m

FROM Movies m WHERE m.year < 1920;

עם אלמנט יחיד:Bag או Setשליפה מ-

Movie s;

s = ELEMENT(SELECT m FROM Movies m

WHERE m.title = "Shrek");

Page 46: 236363 מערכות מסדי נתונים

46

OQLשיכון בשפה מארחת : 2.0 מ- רץאינדקסה: ע"י סוגריים מרובעים, Listמ-שליפה

List<Movie> movieList;

movieList = SELECT m FROM Movies m

ORDER BY m.title, m.year;

const int numMovies = COUNT)Movies);

for )int i = 0; i < numMovies; i++({

const Movie mv = movieList[i];

cout << mv.title << " " << mv.year << " "

<< mv.length << endl;

};

Page 47: 236363 מערכות מסדי נתונים

47

OQLשיכון בשפה מארחת : 3הגדרת טיפוסים:

typedef Struct{star1:Star, star2:Star} StarPair;

Set<StarPair> pairs =

SELECT DISTINCT

StarPair)star1:s1, star2:s2(

FROM Stars s1, Stars s2

WHERE s1.addr = s2.addr

AND s1.name < s2.name;

Page 48: 236363 מערכות מסדי נתונים

48

OQLשיכון בשפה מארחת : 4:constructorיצירת עצמים חדשים: ע"י הפעלת

Studio mgm;

mgm = ELEMENT(SELECT s FROM

Studios s WHERE s.name = "MGM");

Movie gwtw;

gwtw =

Movie)title:"Gone with the Wind",

year:1939,length:239,ownedBy:mgm(;

, Movies extentיוצר עצם חדש ב-.gwtwומציב אותו במשתנה