Translation of ER-diagram into Relational Schema Prof. Sin-Min Lee Department of Computer Science CS 157A Lecture 7
Learning Objectives Define each of the following database terms Relation Primary key Foreign key Referential integrity Field Data type Null value 9.2 Discuss the role of designing databases in the analysis and design of an information system Learn how to transform an entity-relationship (ER) Diagram into an equivalent set of well-structured relations
 
9.
 
Process of Database Design  Logical Design Based upon the conceptual data model Four key steps 1. Develop a logical data model for each known user interface for the application using normalization principles. 2. Combine normalized data requirements from all user interfaces into one consolidated logical database model 3. Translate the conceptual E-R data model for the application into normalized data requirements 4. Compare the consolidated logical database design with the translated E-R model and produce one final logical database model for the application 9.
9.
Relational Database Model Data represented as a set of related tables or relations Relation A named, two-dimensional table of data.  Each relation consists of a set of named columns and an arbitrary number of unnamed rows Properties Entries in cells are simple Entries in columns are from the same set of values Each row is unique The sequence of columns can be interchanged without changing the meaning or use of the relation The rows may be interchanged or stored in any sequence 9.
Relational Database Model Well-Structured Relation A relation that contains a minimum amount of redundancy and allows users to insert, modify and delete the rows without errors or inconsistencies 9.
Transforming E-R Diagrams into Relations It is useful to transform the conceptual data model into a set of normalized relations Steps Represent entities Represent relationships Normalize the relations Merge the relations 9.
Transforming E-R Diagrams into Relations The primary key must satisfy the following two conditions The value of the key must uniquely identify every row in the relation The key should be nonredundant 9.
9.
 
Transforming E-R Diagrams into Relations Represent Relationships Binary 1:N Relationships Add the primary key attribute (or attributes) of the entity on the one side of the relationship as a foreign key in the relation on the right side The one side  migrates  to the many side 9.
9.
Transforming E-R Diagrams into Relations Binary or Unary 1:1 Three possible options Add the primary key of A as a foreign key of B Add the primary key of B as a foreign key of A Both 9.
Transforming E-R Diagrams into Relations Represent Relationships (continued)‏ Binary and higher M:N relationships Create another relation and include primary keys of all relations as primary key of new relation 9.
9.
Transforming E-R Diagrams into Relations Unary 1:N Relationships Relationship between instances of a single entity type Utilize a recursive foreign key A foreign key in a relation that references the primary key values of that same relation Unary M:N Relationships Create a separate relation Primary key of new relation is a composite of two attributes that both take their values from the same primary key 9.
9.
9.
Primary Key Constraints A set of fields is a  key   for a relation if : 1. No two distinct tuples can have same values in all key fields, and 2. This is not true for any subset of the key. Part 2 false? A  superkey . If there’s >1 key for a relation, one of the keys is chosen (by DBA) to be the  primary key . E.g.,  sid  is a key for Students.  (What about  name ?)  The set { sid, gpa } is a superkey. Primary key can not have null value
Foreign Keys, Referential Integrity Foreign key  :  Set of fields in one relation that is used to `refer’ to a tuple in another relation.  (Must correspond to primary key of the second relation.)  Like a `logical pointer’. E.g.  sid  is a foreign key referring to  Students : Enrolled( sid :  string,  cid : string,  grade : string)‏ If all foreign key constraints are enforced,  referential integrity  is achieved, i.e., no dangling references. Can you name a data model w/o referential integrity?  Links in HTML!
Enforcing Referential Integrity Consider Students and Enrolled;  sid  in Enrolled is a foreign key that references Students. What should be done if an Enrolled tuple with a non-existent student id is inserted?  ( Reject it! )‏ What should be done if a Students tuple is deleted? Also delete all Enrolled tuples that refer to it. Disallow deletion of a Students tuple that is referred to. Set sid in Enrolled tuples that refer to it to a  default sid . (In SQL, also: Set sid in Enrolled tuples that refer to it to a special value  null ,  denoting  `unknown’  or  `inapplicable’ .)‏ Similar if primary key of Students tuple is updated.
Logical DB Design: ER to Relational Entity sets to tables. CREATE TABLE  Employees  (ssn  CHAR (11), name  CHAR (20), lot  INTEGER , PRIMARY KEY  (ssn) )‏ Employees ssn name lot
Relationship Sets to Tables In translating a relationship set to a relation, attributes of the relation must include: Keys for each participating entity set  (as foreign keys). This set of attributes forms a  superkey  for the relation . All descriptive attributes. CREATE TABLE  Works_In( ssn  CHAR (1), did  INTEGER , since  DATE , PRIMARY KEY  (ssn, did), FOREIGN KEY  (ssn)  REFERENCES  Employees, FOREIGN KEY  (did)  REFERENCES  Departments )‏
Review: Key Constraints Each dept has at most one manager, according to the  key constraint   on Manages. Translation to  relational model? Many-to-Many 1-to-1 1-to Many Many-to-1 budget did Departments dname since lot name ssn Manages Employees
Translating ER Diagrams with Key Constraints Map relationship to a table: Note that  did  is the key now! Separate tables for Employees and Departments. Since each department has a unique manager, we could instead   combine Manages and Departments. CREATE TABLE  Manages( ssn  CHAR(11) , did  INTEGER , since  DATE , PRIMARY KEY  (did) , FOREIGN KEY  (ssn)  REFERENCES  Employees, FOREIGN KEY  (did)  REFERENCES  Departments )‏ CREATE TABLE  Dept_Mgr( did  INTEGER, dname  CHAR(20), budget  REAL, ssn  CHAR(11) , since  DATE , PRIMARY KEY  (did), FOREIGN KEY  (ssn)  REFERENCES  Employees )‏
Review: Participation Constraints Does every department have a manager? If so, this is a  participation constraint :  the participation of Departments in Manages is said to be  total  (vs.  partial ) . Every  did  value in Departments table must appear in a row of the Manages table (with a non-null  ssn  value!)‏ lot name dname budget did since name dname budget did since Manages since Departments Employees ssn Works_In
Participation Constraints in SQL We can capture participation constraints involving one entity set in a binary relationship, but little else (without resorting to  CHECK  constraints). CREATE TABLE  Dept_Mgr( did  INTEGER, dname  CHAR(20), budget  REAL, ssn  CHAR(11)  NOT NULL , since  DATE, PRIMARY KEY  (did), FOREIGN KEY  (ssn) REFERENCES Employees, ON DELETE NO ACTION )‏
Review: Weak Entities A  weak entity  can be identified uniquely only by considering the primary key of another ( owner ) entity. Owner entity set and weak entity set must participate in a one-to-many relationship set (1 owner, many weak entities). Weak entity set must have total participation in this  identifying  relationship set.  lot name age pname Dependents Employees ssn Policy cost
 
Translating Weak Entity Sets Weak entity set and identifying relationship set are translated into a single table. When the owner entity is deleted, all owned weak entities must also be deleted. CREATE TABLE  Dep_Policy ( pname  CHAR(20) , age  INTEGER , cost  REAL , ssn  CHAR(11) NOT NULL , PRIMARY KEY  (pname, ssn), FOREIGN KEY  (ssn)  REFERENCES  Employees, ON DELETE CASCADE )‏
Review: Binary vs. Ternary Relationships If each policy is owned by just 1 employee: Key constraint on Policies would mean policy can only cover 1 dependent! What are the   additional constraints in the 2nd diagram? age pname Dependents Covers age pname Dependents Purchaser Bad design Better design name Employees ssn lot Policies policyid cost Beneficiary policyid cost Policies name Employees ssn lot
Binary vs. Ternary Relationships (Contd.)‏ The key constraints allow us to combine Purchaser with Policies and Beneficiary with Dependents. Participation constraints lead to  NOT NULL  constraints. What if Policies is a weak entity set? CREATE TABLE  Policies ( policyid  INTEGER , cost  REAL , ssn  CHAR(11)  NOT NULL , PRIMARY KEY  (policyid). FOREIGN KEY  (ssn)  REFERENCES  Employees, ON DELETE CASCADE )‏ CREATE TABLE  Dependents   ( pname  CHAR(20) , age  INTEGER , policyid  INTEGER , PRIMARY KEY  (pname, policyid). FOREIGN KEY  (policyid)  REFERENCES  Policies, ON DELETE CASCADE )‏
 
 
An Example CREATE TABLE Student ( ID   NUMBER, Fname  VARCHAR2(20), Lname  VARCHAR2(20), );
Constraints in Create Table Adding constraints to a table enables the database system to enforce data integrity. Different types of constraints: * Not Null * Default Values * Unique  * Primary Key * Foreign Key * Check Condition
Not Null Constraint CREATE TABLE Student ( ID   NUMBER, Fname  VARCHAR2(20)  NOT NULL , Lname  VARCHAR2(20)  NOT NULL , );
Primary Key Constraint Primary Key implies: * NOT NULL * UNIQUE.  There can only be one primary key. CREATE TABLE Student ( ID   NUMBER  PRIMARY KEY , Fname  VARCHAR2(20) NOT NULL, Lname  VARCHAR2(20) NOT NULL, );
Primary Key Constraint  (Syntax 2)‏ CREATE TABLE Students ( ID   NUMBER, Fname  VARCHAR2(20) NOT NULL, Lname  VARCHAR2(20) NOT NULL, PRIMARY KEY(ID)‏ ); Needed when the primary key is made up of two or more fields
Another Table CREATE TABLE Studies( Course   NUMBER, Student  NUMBER ); What additional constraint do we want on Student? What should be the primary key?
Foreign Key Constraint NOTE: ID must be unique (or primary key) in Student CREATE TABLE Studies( Course   NUMBER, Student  NUMBER, FOREIGN KEY (Student) REFERENCES   Students(ID)‏ );
Translating ER-Diagrams to Table Definitions
Relations vs. Tables We show how to translate ER-Diagrams to table definitions Sometimes, people translate ER-Diagrams to relation definitions, which is more abstract than table definitions. e.g., Student( ID , Fname, Lname);  table definitions contain, in addition, constraints and datatypes
Translating Entities General Rule:  Create a table with the name of the Entity.  There is a column for each attribute The key in the diagram is the primary key of the table Actor id name address birthday
Translating Entities create table Actor(id varchar2(20) primary key,    name varchar2(40),   birthday date,   address varchar2(100)); Actor id name address birthday Relation: Actor ( id , name, birthday, address)‏
Translating Relationships  (without constraints)‏ General Rule: Create a table with the name of the relationship The table has columns for all of the relationship's attributes and for the keys of each entity participating in the relationship What is the primary key of the table? What foreign keys are needed? Actor id name address birthday Acted In Film title type year salary
Translating relationships  (without constraints)‏ What would be the relation for ActedIn? How would you define the table for ActedIn? Actor id name address birthday Acted In Film title type year salary
Translating Recursive Relationships  (without constraints)‏ Employee id name address Manages manager worker Relation: Actor ( worker-id ,  manager-id )‏ What would be the table definition?
Translating relationships (key constraints): Option 1 General Rule for Option 1: Same as without key constraints, except that the primary key is defined differently Director id name Directed Film title salary year
Translating relationships (key constraints): Option 1 create table Directed( id varchar2(20), title varchar2(40), salary integer, )‏ Director id name Directed Film title salary year What primary and foreign keys are missing?
Translating relationships (key constraints): Option 2 General Rule for Option 2: Do not create a table for the relationship Add information columns that would have been in the relationship's table to the table of the entity with the key constraint What is the disadvantage of this method? What is the advantage of this method? Director id name Directed Film title salary year
Translating relationships (key constraints): Option 2 create table Film( title varchar2(40), year integer, primary key (title), )‏ Director id name Directed Film title salary year What 3 lines are missing?
Translating relationships (key constraints)‏ What are the different options for translating this diagram? A R B C
Translating relationships (participation constraints)‏ General Rule: If has both participation and key constraint, use Option 2 from before.  Add the not null constraint to ensure that there will always be values for the key of the other entity Director id name Directed Film title salary year
Translating relationships (participation constraints)‏ create table Film( title varchar2(40), year integer,  id varchar2(20), salary integer, foreign key (id) references Director, primary key (title))‏ Director id name Directed Film title salary year Where should we add NOT NULL?
Translating relationships (participation constraints)‏ How would we translate this? Actor id name Acted In Film title salary year
Translating Weak Entity Sets create table award( name varchar2(40), year integer, money number(6,2), o_name varchar2(40), primary key(name, year, o_name), foreign key (o_name) references  Organization(name)  on delete cascade )‏ Award Organization Gives year name name phone number money
Translating ISA: Option 1 create table MoviePerson( ... )‏ create table Actor(id varchar2(20),   picture bfile,   primary key(id),   foreign key (id) references MoviePerson))‏ create table Director(...)‏ Movie Person ISA id name address picture Director Actor
Translating ISA: Option 2 No table for MoviePerson! create table Actor(id varchar2(20),   address varchar2(100),   name varchar2(20),   picture blob,   primary key(id)); create table Director(...)‏ Movie Person ISA id name address picture Director Actor
Which Option To Choose? What would you choose if: Actor and Director DO NOT COVER MoviePerson? Actor OVERLAPS Director?
Translating Aggregation Create table for Won using: key of ActedIn key of Award (careful, award is a weak entity)‏ Actor picture Film year type title Acted In salary Award Organization Gives year name name phone number Won

Eer >r.model

  • 1.
    Translation of ER-diagraminto Relational Schema Prof. Sin-Min Lee Department of Computer Science CS 157A Lecture 7
  • 2.
    Learning Objectives Defineeach of the following database terms Relation Primary key Foreign key Referential integrity Field Data type Null value 9.2 Discuss the role of designing databases in the analysis and design of an information system Learn how to transform an entity-relationship (ER) Diagram into an equivalent set of well-structured relations
  • 3.
  • 4.
  • 5.
  • 6.
    Process of DatabaseDesign Logical Design Based upon the conceptual data model Four key steps 1. Develop a logical data model for each known user interface for the application using normalization principles. 2. Combine normalized data requirements from all user interfaces into one consolidated logical database model 3. Translate the conceptual E-R data model for the application into normalized data requirements 4. Compare the consolidated logical database design with the translated E-R model and produce one final logical database model for the application 9.
  • 7.
  • 8.
    Relational Database ModelData represented as a set of related tables or relations Relation A named, two-dimensional table of data. Each relation consists of a set of named columns and an arbitrary number of unnamed rows Properties Entries in cells are simple Entries in columns are from the same set of values Each row is unique The sequence of columns can be interchanged without changing the meaning or use of the relation The rows may be interchanged or stored in any sequence 9.
  • 9.
    Relational Database ModelWell-Structured Relation A relation that contains a minimum amount of redundancy and allows users to insert, modify and delete the rows without errors or inconsistencies 9.
  • 10.
    Transforming E-R Diagramsinto Relations It is useful to transform the conceptual data model into a set of normalized relations Steps Represent entities Represent relationships Normalize the relations Merge the relations 9.
  • 11.
    Transforming E-R Diagramsinto Relations The primary key must satisfy the following two conditions The value of the key must uniquely identify every row in the relation The key should be nonredundant 9.
  • 12.
  • 13.
  • 14.
    Transforming E-R Diagramsinto Relations Represent Relationships Binary 1:N Relationships Add the primary key attribute (or attributes) of the entity on the one side of the relationship as a foreign key in the relation on the right side The one side migrates to the many side 9.
  • 15.
  • 16.
    Transforming E-R Diagramsinto Relations Binary or Unary 1:1 Three possible options Add the primary key of A as a foreign key of B Add the primary key of B as a foreign key of A Both 9.
  • 17.
    Transforming E-R Diagramsinto Relations Represent Relationships (continued)‏ Binary and higher M:N relationships Create another relation and include primary keys of all relations as primary key of new relation 9.
  • 18.
  • 19.
    Transforming E-R Diagramsinto Relations Unary 1:N Relationships Relationship between instances of a single entity type Utilize a recursive foreign key A foreign key in a relation that references the primary key values of that same relation Unary M:N Relationships Create a separate relation Primary key of new relation is a composite of two attributes that both take their values from the same primary key 9.
  • 20.
  • 21.
  • 22.
    Primary Key ConstraintsA set of fields is a key for a relation if : 1. No two distinct tuples can have same values in all key fields, and 2. This is not true for any subset of the key. Part 2 false? A superkey . If there’s >1 key for a relation, one of the keys is chosen (by DBA) to be the primary key . E.g., sid is a key for Students. (What about name ?) The set { sid, gpa } is a superkey. Primary key can not have null value
  • 23.
    Foreign Keys, ReferentialIntegrity Foreign key : Set of fields in one relation that is used to `refer’ to a tuple in another relation. (Must correspond to primary key of the second relation.) Like a `logical pointer’. E.g. sid is a foreign key referring to Students : Enrolled( sid : string, cid : string, grade : string)‏ If all foreign key constraints are enforced, referential integrity is achieved, i.e., no dangling references. Can you name a data model w/o referential integrity? Links in HTML!
  • 24.
    Enforcing Referential IntegrityConsider Students and Enrolled; sid in Enrolled is a foreign key that references Students. What should be done if an Enrolled tuple with a non-existent student id is inserted? ( Reject it! )‏ What should be done if a Students tuple is deleted? Also delete all Enrolled tuples that refer to it. Disallow deletion of a Students tuple that is referred to. Set sid in Enrolled tuples that refer to it to a default sid . (In SQL, also: Set sid in Enrolled tuples that refer to it to a special value null , denoting `unknown’ or `inapplicable’ .)‏ Similar if primary key of Students tuple is updated.
  • 25.
    Logical DB Design:ER to Relational Entity sets to tables. CREATE TABLE Employees (ssn CHAR (11), name CHAR (20), lot INTEGER , PRIMARY KEY (ssn) )‏ Employees ssn name lot
  • 26.
    Relationship Sets toTables In translating a relationship set to a relation, attributes of the relation must include: Keys for each participating entity set (as foreign keys). This set of attributes forms a superkey for the relation . All descriptive attributes. CREATE TABLE Works_In( ssn CHAR (1), did INTEGER , since DATE , PRIMARY KEY (ssn, did), FOREIGN KEY (ssn) REFERENCES Employees, FOREIGN KEY (did) REFERENCES Departments )‏
  • 27.
    Review: Key ConstraintsEach dept has at most one manager, according to the key constraint on Manages. Translation to relational model? Many-to-Many 1-to-1 1-to Many Many-to-1 budget did Departments dname since lot name ssn Manages Employees
  • 28.
    Translating ER Diagramswith Key Constraints Map relationship to a table: Note that did is the key now! Separate tables for Employees and Departments. Since each department has a unique manager, we could instead combine Manages and Departments. CREATE TABLE Manages( ssn CHAR(11) , did INTEGER , since DATE , PRIMARY KEY (did) , FOREIGN KEY (ssn) REFERENCES Employees, FOREIGN KEY (did) REFERENCES Departments )‏ CREATE TABLE Dept_Mgr( did INTEGER, dname CHAR(20), budget REAL, ssn CHAR(11) , since DATE , PRIMARY KEY (did), FOREIGN KEY (ssn) REFERENCES Employees )‏
  • 29.
    Review: Participation ConstraintsDoes every department have a manager? If so, this is a participation constraint : the participation of Departments in Manages is said to be total (vs. partial ) . Every did value in Departments table must appear in a row of the Manages table (with a non-null ssn value!)‏ lot name dname budget did since name dname budget did since Manages since Departments Employees ssn Works_In
  • 30.
    Participation Constraints inSQL We can capture participation constraints involving one entity set in a binary relationship, but little else (without resorting to CHECK constraints). CREATE TABLE Dept_Mgr( did INTEGER, dname CHAR(20), budget REAL, ssn CHAR(11) NOT NULL , since DATE, PRIMARY KEY (did), FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE NO ACTION )‏
  • 31.
    Review: Weak EntitiesA weak entity can be identified uniquely only by considering the primary key of another ( owner ) entity. Owner entity set and weak entity set must participate in a one-to-many relationship set (1 owner, many weak entities). Weak entity set must have total participation in this identifying relationship set. lot name age pname Dependents Employees ssn Policy cost
  • 32.
  • 33.
    Translating Weak EntitySets Weak entity set and identifying relationship set are translated into a single table. When the owner entity is deleted, all owned weak entities must also be deleted. CREATE TABLE Dep_Policy ( pname CHAR(20) , age INTEGER , cost REAL , ssn CHAR(11) NOT NULL , PRIMARY KEY (pname, ssn), FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE CASCADE )‏
  • 34.
    Review: Binary vs.Ternary Relationships If each policy is owned by just 1 employee: Key constraint on Policies would mean policy can only cover 1 dependent! What are the additional constraints in the 2nd diagram? age pname Dependents Covers age pname Dependents Purchaser Bad design Better design name Employees ssn lot Policies policyid cost Beneficiary policyid cost Policies name Employees ssn lot
  • 35.
    Binary vs. TernaryRelationships (Contd.)‏ The key constraints allow us to combine Purchaser with Policies and Beneficiary with Dependents. Participation constraints lead to NOT NULL constraints. What if Policies is a weak entity set? CREATE TABLE Policies ( policyid INTEGER , cost REAL , ssn CHAR(11) NOT NULL , PRIMARY KEY (policyid). FOREIGN KEY (ssn) REFERENCES Employees, ON DELETE CASCADE )‏ CREATE TABLE Dependents ( pname CHAR(20) , age INTEGER , policyid INTEGER , PRIMARY KEY (pname, policyid). FOREIGN KEY (policyid) REFERENCES Policies, ON DELETE CASCADE )‏
  • 36.
  • 37.
  • 38.
    An Example CREATETABLE Student ( ID NUMBER, Fname VARCHAR2(20), Lname VARCHAR2(20), );
  • 39.
    Constraints in CreateTable Adding constraints to a table enables the database system to enforce data integrity. Different types of constraints: * Not Null * Default Values * Unique * Primary Key * Foreign Key * Check Condition
  • 40.
    Not Null ConstraintCREATE TABLE Student ( ID NUMBER, Fname VARCHAR2(20) NOT NULL , Lname VARCHAR2(20) NOT NULL , );
  • 41.
    Primary Key ConstraintPrimary Key implies: * NOT NULL * UNIQUE. There can only be one primary key. CREATE TABLE Student ( ID NUMBER PRIMARY KEY , Fname VARCHAR2(20) NOT NULL, Lname VARCHAR2(20) NOT NULL, );
  • 42.
    Primary Key Constraint (Syntax 2)‏ CREATE TABLE Students ( ID NUMBER, Fname VARCHAR2(20) NOT NULL, Lname VARCHAR2(20) NOT NULL, PRIMARY KEY(ID)‏ ); Needed when the primary key is made up of two or more fields
  • 43.
    Another Table CREATETABLE Studies( Course NUMBER, Student NUMBER ); What additional constraint do we want on Student? What should be the primary key?
  • 44.
    Foreign Key ConstraintNOTE: ID must be unique (or primary key) in Student CREATE TABLE Studies( Course NUMBER, Student NUMBER, FOREIGN KEY (Student) REFERENCES Students(ID)‏ );
  • 45.
    Translating ER-Diagrams toTable Definitions
  • 46.
    Relations vs. TablesWe show how to translate ER-Diagrams to table definitions Sometimes, people translate ER-Diagrams to relation definitions, which is more abstract than table definitions. e.g., Student( ID , Fname, Lname); table definitions contain, in addition, constraints and datatypes
  • 47.
    Translating Entities GeneralRule: Create a table with the name of the Entity. There is a column for each attribute The key in the diagram is the primary key of the table Actor id name address birthday
  • 48.
    Translating Entities createtable Actor(id varchar2(20) primary key, name varchar2(40), birthday date, address varchar2(100)); Actor id name address birthday Relation: Actor ( id , name, birthday, address)‏
  • 49.
    Translating Relationships (without constraints)‏ General Rule: Create a table with the name of the relationship The table has columns for all of the relationship's attributes and for the keys of each entity participating in the relationship What is the primary key of the table? What foreign keys are needed? Actor id name address birthday Acted In Film title type year salary
  • 50.
    Translating relationships (without constraints)‏ What would be the relation for ActedIn? How would you define the table for ActedIn? Actor id name address birthday Acted In Film title type year salary
  • 51.
    Translating Recursive Relationships (without constraints)‏ Employee id name address Manages manager worker Relation: Actor ( worker-id , manager-id )‏ What would be the table definition?
  • 52.
    Translating relationships (keyconstraints): Option 1 General Rule for Option 1: Same as without key constraints, except that the primary key is defined differently Director id name Directed Film title salary year
  • 53.
    Translating relationships (keyconstraints): Option 1 create table Directed( id varchar2(20), title varchar2(40), salary integer, )‏ Director id name Directed Film title salary year What primary and foreign keys are missing?
  • 54.
    Translating relationships (keyconstraints): Option 2 General Rule for Option 2: Do not create a table for the relationship Add information columns that would have been in the relationship's table to the table of the entity with the key constraint What is the disadvantage of this method? What is the advantage of this method? Director id name Directed Film title salary year
  • 55.
    Translating relationships (keyconstraints): Option 2 create table Film( title varchar2(40), year integer, primary key (title), )‏ Director id name Directed Film title salary year What 3 lines are missing?
  • 56.
    Translating relationships (keyconstraints)‏ What are the different options for translating this diagram? A R B C
  • 57.
    Translating relationships (participationconstraints)‏ General Rule: If has both participation and key constraint, use Option 2 from before. Add the not null constraint to ensure that there will always be values for the key of the other entity Director id name Directed Film title salary year
  • 58.
    Translating relationships (participationconstraints)‏ create table Film( title varchar2(40), year integer, id varchar2(20), salary integer, foreign key (id) references Director, primary key (title))‏ Director id name Directed Film title salary year Where should we add NOT NULL?
  • 59.
    Translating relationships (participationconstraints)‏ How would we translate this? Actor id name Acted In Film title salary year
  • 60.
    Translating Weak EntitySets create table award( name varchar2(40), year integer, money number(6,2), o_name varchar2(40), primary key(name, year, o_name), foreign key (o_name) references Organization(name) on delete cascade )‏ Award Organization Gives year name name phone number money
  • 61.
    Translating ISA: Option1 create table MoviePerson( ... )‏ create table Actor(id varchar2(20), picture bfile, primary key(id), foreign key (id) references MoviePerson))‏ create table Director(...)‏ Movie Person ISA id name address picture Director Actor
  • 62.
    Translating ISA: Option2 No table for MoviePerson! create table Actor(id varchar2(20), address varchar2(100), name varchar2(20), picture blob, primary key(id)); create table Director(...)‏ Movie Person ISA id name address picture Director Actor
  • 63.
    Which Option ToChoose? What would you choose if: Actor and Director DO NOT COVER MoviePerson? Actor OVERLAPS Director?
  • 64.
    Translating Aggregation Createtable for Won using: key of ActedIn key of Award (careful, award is a weak entity)‏ Actor picture Film year type title Acted In salary Award Organization Gives year name name phone number Won

Editor's Notes

  • #23 6
  • #24 7
  • #25 13
  • #26 3 The slides for this text are organized into several modules. Each lecture contains about enough material for a 1.25 hour class period. (The time estimate is very approximate--it will vary with the instructor, and lectures also differ in length; so use this as a rough guideline.) This covers Lectures 1 and 2 (of 6) in Module (5). Module (1): Introduction (DBMS, Relational Model)‏ Module (2): Storage and File Organizations (Disks, Buffering, Indexes)‏ Module (3): Database Concepts (Relational Queries, DDL/ICs, Views and Security)‏ Module (4): Relational Implementation (Query Evaluation, Optimization)‏ Module (5): Database Design (ER Model, Normalization, Physical Design, Tuning)‏ Module (6): Transaction Processing (Concurrency Control, Recovery)‏ Module (7): Advanced Topics
  • #27 5
  • #28 6
  • #29 7
  • #30 8
  • #31 9
  • #32 10
  • #34 11
  • #35 7
  • #36 8
  • #37 15