Rensselaer Polytechnic Institute CSCI-4380 – Database Systems David Goldschmidt, Ph.D.
Modeling a database begins by identifying the information to be stored Need to also define how information elements are related to one another Further, define constraints on the information, including defining keys, referential integrity, etc.
An entity is a building block of our database, abstracting an object of some sort e.g. movie, faculty member, student An entity set is a collection of similar entities e.g. all movies, all faculty members, all students This is similar to the object/class concepts of OOP, but there are no methods/functions
Each entity set has a key and (usually) other attributes The key consists of one or more attributes The key should functionally determine all other attributes! Entity sets should be in BCNF or 3NF Entity sets should not have attributes that relate to other entity sets, unless they are foreign keys
An E/R diagram is a graph representing: Entity sets (rectangles) Attributes (ovals) Relationships (diamonds) ▪ i.e. connections between two or more entity sets Students Courses id name enroll-in E/R diagrams are a notation for describing database schemas keys are underlined
Each course has many enrolled students Each students enrolls in many classes Note that many implies zero or more Students Courses enroll-in
Each department has many faculty Each faculty member belongs to at most one department (so zero or one) Faculty Departments in “at most one”
Each department has at most one chair Each faculty member can be chair of at most one department Faculty Departments chair-of
For a particular major and student, there is at most one faculty member who is the advisor A faculty member may advise many students in many majors Students Faculty advised-by Majors
A student enrolls in a course with at most one department code (e.g. CSCI) Is this the correct relationship? Students Courses enroll-in DeptCodes (e.g. CSCI)
The department code is actually functionally determined by the course itself (e.g. by CRN) Note that this does not account for cross-listed courses.... Students Courses enroll-in DeptCodes (e.g. CSCI) has
Is this the correct relationship? It is correct (and necessary) if a faculty member can advise students across multiple majors Otherwise, each faculty should functionally determine the major s/he advises Students Faculty advised-by Majors
A movie may have many sequels For each sequel, there is at most one original movie Movies sequel-of original sequel exactly one in this case... role
The grade attribute is associated with the given relationship ▪ And involves both a student and a course This is merely a shortcut.... Students Courses enroll-in grade
The grade attribute of the Grades entity set (relation) is functionally determined by the entire tuple involving Students and Courses i.e. a student enrolled in a course has a grade Students Courses enroll-in Grades grade
Go back to the relations we’ve worked with in class and create E/R diagrams for each e.g. MusicGroup, Company Also create a detailed E/R diagram for the celebrities relations (and relationships!) see next slide....