IST 210: Organization of Data

Slides:



Advertisements
Similar presentations
Database Design DB Chapter 5 J.G. Zheng June 29th 2005.
Advertisements

Designing tables from a data model (Chapter 6) One base table for each entity.
Database Lecture Notes Mapping ER Diagrams to Tables 2 Dr. Meg Murray
(wrapping up from last week)
Database Design Chapter Five DATABASE CONCEPTS, 6th Edition
Database Processing: Fundamentals, Design, and Implementation, 9/e by David M. KroenkeChapter 5/1 Copyright © 2004 Please……. No Food Or Drink in the class.
Data Modeling and Entity- Relationship Model II. IST2102 I want a database to maintain departments in my company. Store information about my employees,
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 5-1 COS 346 Day 9.
Fundamentals, Design, and Implementation, 9/e Chapter 5 Database Design.
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 6-1 David M. Kroenke Database Processing Chapter 6 Transforming Data.
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 6-1 COS 346 Day 10.
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 6-1 COS 346 Day 8.
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 6-1 COS 346 Day 7.
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 6-1 David M. Kroenke’s Chapter Six: Transforming Data Models into Database.
Database Design Chapter 2. Goal of all Information Systems  To add value –Reduce costs –Increase sales or revenue –Provide a competitive advantage.
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 6-1 David M. Kroenke’s Chapter Six: Transforming ER Models into Database.
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 6-1 David M. Kroenke’s Chapter Six: Transforming ER Models into Database.
Transforming Data Models into Database Designs
Data Modeling and Entity- Relationship Model I IST2101.
Entity-Relationship Design
COURSE REGISTRATION SYSTEM Case study IST2101. Case Study: Course Registration (1) IST2102 You are helping Penn State create a course registration system.
Chapter Six Professor Adams’ Slides. Note that entities are shadowed, tables are not. Note that entities have no physical existence (blueprint) Note.
1 ER Modeling BUAD/American University Entity Relationship (ER) Modeling.
DATABASE DESIGN I IST 210: Organization of Data IST210 1.
© 2002 by Prentice Hall 1 Database Design David M. Kroenke Database Concepts 1e Chapter 5 5.
Normalization Process: Exercise 1: Step 1 IST2101 Step 1. Identify all the candidate keys of the relation. StudentNumber.
Database Design IST210 Class Lecture
Chapter 2. The Relational Model (cont.)
Database System Concepts, 6 th Ed. ©Silberschatz, Korth and Sudarshan Lecture-03 Introduction –Data Models Lectured by, Jesmin Akhter.
Information Access Mgt09/12/971 Entity-Relationship Design Information Level Design.
Gegevens Analyse Les 5: van ERD naar DSD.
Database Design I (In-Class Exercise Answer) IST 210: Organization of Data IST2101.
THE RELATIONAL MODEL I IST 210: Organization of Data IST210 1.
1 SY306: Web and Databases for Cyber Operations Slide Set: 11 Databases - Relational Model.
Database Design. Database Design Process Data Model Requirements Application 1 Database Requirements Application 2 Requirements Application 4 Requirements.
DAVID M. KROENKE’S DATABASE PROCESSING, 10th Edition © 2006 Pearson Prentice Hall 6-1 David M. Kroenke’s Chapter Six: Transforming Data Models into Database.
©Silberschatz, Korth and Sudarshan7.1Database System Concepts - 6 th Edition Chapter 7: Entity-Relationship Model.
Data Modeling and Entity-Relationship Model I
Database Design I IST 210: Organization of Data IST2101.
DATA MODELING AND ENTITY-RELATIONSHIP MODEL II IST 210: Organization of Data IST210 1.
DATABASE DESIGN II IST 210: Organization of Data IST210 1.
Database Design I (In-Class Exercise Answer) IST 210: Organization of Data IST2101.
Conceptual DB Design Conceptual database design ERD’s.
Entity Relationship Modeling
Let try to identify the conectivity of these entity relationship
CSIS 115 Database Design and Applications for Business
Data Modeling and the Entity-Relationship Model
Chapter 5 Database Design
Database Design Chapter Five DATABASE CONCEPTS, 4th Edition
CSIS 115 Database Design and Applications for Business
Database Design – Lecture 4
CSIS 115 Database Design and Applications for Business
Chapter 7 Entity-Relationship Model
ERD :: 19 / 1 / Entity-Relationship (ER) Modeling. ER Modeling is a top-down approach to database design. Entity Relationship (ER) Diagram –A.
Entity Relationship Diagram
COS 346 Day 8.
© 2011 Pearson Education, Inc. Publishing as Prentice Hall
ERD’s REVIEW DBS201.
Database Processing: David M. Kroenke’s Chapter Six:
Session 2 Welcome: The seventh learning sequence
Creating Tables & Inserting Values Using SQL
Chapter 2 Modeling Data in the Organization
Oracle Data Definition Language (DDL)
Weak Entity Sets An entity set that does not have a primary key is referred to as a weak entity set. The existence of a weak entity set depends on the.
Database Design: Relational Model
A Very Brief Introduction to Relational Databases
Database Processing: David M. Kroenke’s Chapter Six:
Database Processing: David M. Kroenke’s Chapter Six:
Conceptual Data Modeling
Presentation transcript:

IST 210: Organization of Data Database Design I IST 210: Organization of Data

YOUR JOB! User requirement A database IST210 I want a database to maintain departments in my company. Store information about my employees, their projects and assignments. I want …. User requirement $$$ Data Modeling (Ch.4) YOUR JOB! Database Design (Ch.5) A database

Two-Step Approach: Step 1 IST210 Two-Step Approach: Step 1 Data Modeling (Ch.4) Database Design (Ch.5) Input: User requirement; Output: E-R Diagram Use Entity-Relationship Diagram (E-R Diagram) to capture all user requirements

Two-Step Approach: Step 2 IST210 Two-Step Approach: Step 2 Data Modeling (Ch.4) Database Design (Ch.5) Input: E-R diagram; Output: A database Transferring a data model to a relational database Entities  Relations Relationships  Foreign keys and extra

Data Model (E-R Diagram)  Relational Model (Tables) IST210 Chapter Key Objective Data Model (E-R Diagram)  Relational Model (Tables) Entity  Table Entity name  Table name Identifier  Primary key Attributes  Attributes Relationship  Foreign key or a new table Determined by the maximal cardinality Specify the attribute properties Data type Key Required Determined by the minimal cardinality Remarks

E-R Diagram  Tables Entity  Table Entity name  Table name IST210 E-R Diagram  Tables Entity  Table Entity name  Table name Identifier  Primary key Attributes  Attributes Relationship  Foreign key or a new table Specify the attribute properties

Example EMPLOYEE LOCKER EmployeeID LockerID Name LockerRoom IST210 Example EMPLOYEE LOCKER Entity name  Table name Identifier  Primary key Attributes  Attributes EmployeeID LockerID Name OfficeNumber OfficePhone LockerRoom LockerSize EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize) *primary key: use underline

E-R Diagram  Tables Entity  Table Entity name  Table name IST210 E-R Diagram  Tables Entity  Table Entity name  Table name Identifier  Primary key Attributes  Attributes Relationship  Foreign key or a new table Determined by the maximal cardinality Specify the attribute properties

Maximal Cardinality 1:1 (one-to-one) Relationship IST210 Maximal Cardinality 1:1 (one-to-one) Relationship 1:N (one-to-many) Relationship N:M (many-to-many) Relationship Entity A Entity B Entity A Entity B Entity A Entity B

1:1 Relationship EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) IST210 1:1 Relationship EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE LOCKER Employee ID Name Office Number Phone 4 Tom 281 9182 Locker ID Room Size 1 #2 10 5 Relationship is not captured yet! Add foreign key ?

Employee 4 owns locker 1; locker 1 belongs to employee 4. Option A IST210 Employee 4 owns locker 1; locker 1 belongs to employee 4. Option A EMPLOYEE LOCKER Locker ID Room Size 1 #2 10 5 Employee ID Name Office Number Phone Locker ID 4 Tom 281 9182 1 Option B EMPLOYEE LOCKER Locker ID Room Size EmployeeID 1 #2 10 4 5 Employee ID Name Office Number Phone 4 Tom 281 9182 Option C EMPLOYEE LOCKER Locker ID Room Size EmployeeID 1 #2 10 4 5 Employee ID Name Office Number Phone Locker ID 4 Tom 281 9182 1

1:1 Relationship *foreign key: italic IST210 1:1 Relationship *foreign key: italic EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) Option A EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize, EmployeeID) Option B Both options are correct. Option A is preferred. If choosing Option A, since every employee has one locker, LockerID must have a value in EMPLOYEE table. If choosing Option B, since some lockers does not belong to anyone, EmployeeID will be NULL value for some lockers and it takes extra space. (See the previous slide, Option B needs one more cell.)

IST210 1:1 Relationship The maximum cardinality determines how a relationship is represented 1:1 relationship The key from one relation is placed in the other as a foreign key It does not matter which table receives the foreign key We prefer the option taking less space

1:N Relationship EMPLOYEE LOCKER EmployeeID LockerID Name OfficeNumber IST210 1:N Relationship EMPLOYEE LOCKER EmployeeID LockerID Name OfficeNumber OfficePhone LockerRoom LockerSize Assume one-to-many relationship EMPLOYEE LOCKER Employee ID Last Name First Office Number Phone 4 Green Tom 281 9182 Locker ID Room Size 1 #2 10 5 Relationship is not captured yet! Add foreign key ?

Employee 4 owns locker 1 and 5. Option A EMPLOYEE LOCKER IST210 Employee 4 owns locker 1 and 5. Option A EMPLOYEE LOCKER Locker ID Room Size 1 #2 10 5 Employee ID Name Office Number Phone Locker ID 4 Tom 281 9182 1, 5 Option B EMPLOYEE LOCKER Locker ID Room Size EmployeeID 1 #2 10 4 5 Employee ID Name Office Number Phone 4 Tom 281 9182 Option C EMPLOYEE LOCKER EmployeeID Name Office Number Phone Locker ID 4 Tom 281 9182 1, 5 Locker ID Room Size EmployeeID 1 #2 10 4 5

1:N Relationship EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) IST210 1:N Relationship EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize, EmployeeID)

IST210 1:N Relationship Like a 1:1 relationship, a 1:N relationship is saved by placing the key from one table into another as a foreign key However, in a 1:N the foreign key always goes into the many-side of the relationship The 1 side is called the parent The N side is called the child

N:M Relationship EMPLOYEE LOCKER EmployeeID LockerID Name OfficeNumber IST210 N:M Relationship EMPLOYEE LOCKER EmployeeID LockerID Name OfficeNumber OfficePhone LockerRoom LockerSize Assume many-to-many relationship EMPLOYEE LOCKER Employee ID Name Office Number Phone 4 Tom 281 9182 10 John 777 1829 Locker ID Room Size 1 #2 10 5 Relationship is not captured yet! Add foreign key ?

Employee 4 owns locker 1 and 5. Employee 10 owns locker 1. IST210 Employee 4 owns locker 1 and 5. Employee 10 owns locker 1. Option A EMPLOYEE LOCKER Employee ID Name Office Number Phone Locker ID 4 Tom 281 9182 1, 5 10 John 777 1829 1 Locker Number Room Size 1 #2 10 5 Option B EMPLOYEE LOCKER Locker ID Room Size EmployeeID 1 #2 10 4, 10 5 4 Employee ID Name Office Number Phone 4 Tom 281 9182 10 John 777 1829

Employee 4 owns locker 1 and 5. Employee 10 owns locker 1. IST210 Employee 4 owns locker 1 and 5. Employee 10 owns locker 1. EMPLOYEE LOCKER Employee ID Name Office Number Phone 4 Tom 281 9182 10 John 777 1829 Locker ID Room Size 1 #2 10 5 ASSIGNMENT Employee ID Locker 4 1 5 10 NOT SIMPLY ADDING FOREIGN KEYS! CREATE ANOTHER TABLE!

IST210 N:M Relationship EMPLOYEE(EmployeeID, LastName, FirstName, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize) ASSIGNMENT(EmployeeID, LockerID) Note: EmployeeID and LockerID are both primary keys and foreign keys in ASSIGNMENT table

IST210 N:M Relationship To represent a N:M relationship in relational design, a new table must be created. This table is called an intersection table An intersection table has a composite key consisting of the keys from each of the tables that it connects

Relationship Summary 1:1  add a foreign key to either table IST210 Relationship Summary 1:1  add a foreign key to either table (preferred) EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) or EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize, EmployeeID) 1:N  add a foreign key to the many-side table EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize, EmployeeID) N:M  add an intersection table EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize) ASSIGNMENT(EmployeeID, LockerID)

In-class Exercise 1 Transform this diagram into tables PARKING USER IST210 In-class Exercise 1 Transform this diagram into tables PARKING USER SpotID UserID Location MonthlyCost Name Email

In-class Exercise 1 Transform this diagram into tables PARKING USER IST210 In-class Exercise 1 Transform this diagram into tables PARKING USER SpotID UserID Location MonthlyCost Name Email PARKING(SpotID, Location, MonthlyCost) USER(UserID, Name, Email, SpotID)

In-class Exercise 1: Notes IST210 In-class Exercise 1: Notes PARKING(SpotID, Location, MonthlyCost) USER(UserID, Name, Email, SpotID) PARKING(SpotID, Location, MonthlyCost, UserID) USER(UserID, Name, Email) Note: both options are correct, but the first one is preferred because of the minimal cardinality of SpotID is mandatory.

In-class Exercise 2 Transform this diagram into tables APARTMENT IST210 In-class Exercise 2 Transform this diagram into tables BuildingNameApartmentID NumberOfBed NumberOfBath Rent BuildingName Address APARTMENT BUILDING

In-class Exercise 2 Transform this diagram into tables IST210 In-class Exercise 2 Transform this diagram into tables BUILDING(BuildingName, Address) APARTMENT(BuildingName, ApartmentID, NumberOfBedrooms, NumberofBaths, Rent)

In-class Exercise 2: Notes IST210 In-class Exercise 2: Notes BUILDING(BuildingName, Address) APARTMENT(BuildingName, ApartmentID, NumberOfBedrooms, NumberofBaths, Rent) Notes: * A common mistake is making ApartmentID as the only primary key. (BuildingName, ApartmentID) should a composite key for APARTMENT * Another common mistake is to create a duplicate attribute BuildingName in APARTMENT. Or forget to make BuildingName as the foreign key

In-class Exercise 3 Transform this diagram into tables STUDENT COURSE IST210 In-class Exercise 3 Transform this diagram into tables CourseID CourseName Instructor StudentID StudentName Email COURSE STUDENT

In-class Exercise 3 Transform this diagram into tables STUDENT COURSE IST210 In-class Exercise 3 Transform this diagram into tables CourseID CourseName Instructor StudentID StudentName Email COURSE STUDENT STUDENT(StudentID, StudentName, Email) COURSE(CourseID, CourseName, Instructor) REGISTRATION(StudentID, CourseID)

In-class Exercise 3: Notes IST210 In-class Exercise 3: Notes STUDENT(StudentID, StudentName, Email) COURSE(CourseID, CourseName, Instructor) REGISTRATION(StudentID, CourseID) Notes: * In REGISTRATION table, StudetID and CourseID are both primary key and foreign key. So you should give both underline and italic (wave underline in hand-written format) to them.

E-R Diagram  Tables Entity  Table Entity name  Table name IST210 E-R Diagram  Tables Entity  Table Entity name  Table name Identifier  Primary key Attributes  Attributes Relationship  Foreign key or a new table Determined by the maximal cardinality 1:1  add a foreign key to either table 1:N  add a foreign key to the many-side table N:M  add an intersection table Specify the attribute properties

E-R Diagram  Tables Entity  Table Entity name  Table name IST210 E-R Diagram  Tables Entity  Table Entity name  Table name Identifier  Primary key Attributes  Attributes Relationship  Foreign key or a new table Determined by the maximal cardinality Specify the attribute properties Data type Key Required Determined by the minimal cardinality Remarks

Column Name Data Type Key Required Remarks EmployeeID Name IST210 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column Name Data Type Key Required Remarks EmployeeID Name OfficeNumber OfficePhone LockerID LOCKER table Column Name Data Type Key Required Remarks LockerID LockerRoom LockerSize

Determine the data types based on the type of these attributes IST210 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column Name Data Type EmployeeID int Name char(50) OfficeNumber char(20) OfficePhone char(12) LockerID Data Type Determine the data types based on the type of these attributes Data types must be the types defined in SQL http://technet.microsoft.com/en-us/library/ms187752.aspx Data type of a foreign key must be the same type as its referred primary key LockerID in EMPLOYEE table must have the same data type as LockerID in LOCKER because LockerID is a foreign key in EMPLOYEE LOCKER table Column Name Data Type LockerID int LockerRoom char(10) LockerSize float

Specify primary key and foreign key(s) in the table IST210 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column Name Key EmployeeID Primary key Name OfficeNumber OfficePhone LockerID Foreign key Key Specify primary key and foreign key(s) in the table LOCKER table Column Name Data Type LockerID Primary key LockerRoom LockerSize

Primary key must be required IST210 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column Name Required EmployeeID Yes Name OfficeNumber No OfficePhone LockerID Required Whether an attribute is required or not determines whether we allow NULL value for this attribute Primary key must be required Normal attributes are determined based on requirements or common sense “not required” is preferred Foreign key is determined by minimum cardinality An employee must have at least one locker. So LockerID is required in EMPLOYEE LOCKER table Column Name Required LockerID Yes LockerRoom LockerSize

Surrogate key: initial value = 1 Increment = 1 Name OfficeNumber IST210 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column Name Remarks EmployeeID Surrogate key: initial value = 1 Increment = 1 Name OfficeNumber OfficePhone Format: ###-###-#### LockerID Reference: LOCKER Remarks If a primary key is a surrogate key, specify the initial value and increment If an attribute is a foreign key, specify which table it refers to If an attribute has a required format, specify the format If an attribute has a default value, specify the value LOCKER table Column Name Remarks LockerID Surrogate key: initial value = 1 Increment = 1 LockerRoom LockerSize Default value: 10

Now we complete converting an E-R diagram to tables IST210 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table LOCKER table Column Name Data Type Key Required Remarks EmployeeID int Primary key Yes Surrogate key: initial value = 1 Increment = 1 Name char(50) OfficeNumber char(20) No OfficePhone char(12) Format: ###-###-#### LockerID Foreign key Reference: LOCKER Column Name Data Type Key Required Remarks LockerID int Primary key Yes Surrogate key: initial value = 1 Increment = 1 LockerRoom char(10) LockerSize float Default value: 10 Now we complete converting an E-R diagram to tables Next, we can use SQL to create a real database

In-class Exercise 1 PARKING(SpotID, Location, MonthlyCost) IST210 In-class Exercise 1 PARKING(SpotID, Location, MonthlyCost) USER(UserID, Name, Email, SpotID)

PARKING(SpotID, Location, MonthlyCost) IST210 In-class Exercise 1 PARKING(SpotID, Location, MonthlyCost) USER(UserID, Name, Email, SpotID) PARKING table Column Name Data Type Key Required Remarks SpotID Location MonthlyCost USER table Column Name Data Type Key Required Remarks UserID Name Email SpotID

PARKING(SpotID, Location, MonthlyCost) IST210 PARKING(SpotID, Location, MonthlyCost) USER(UserID, Name, Email, SpotID) PARKING table Column Name Data Type Key Required Remarks SpotID int Primary key Yes Surrogate key: initial value = 1 Increment = 1 Location char(50) MonthlyCost Default: 50 USER table Column Name Data Type Key Required Remarks UserID int Primary key Yes Surrogate key: initial value = 1 Increment = 1 Name char(100) Email char(50) No SpotID Foreign key Reference: PARKING

Notes: See the red parts IST210 PARKING(SpotID, Location, MonthlyCost) USER(UserID, Name, Email, SpotID) PARKING table Column Name Data Type Key Required Remarks SpotID int Primary key Yes Surrogate key: initial value = 1 Increment = 1 Location char(50) MonthlyCost Default: 50 USER table Column Name Data Type Key Required Remarks UserID int Primary key Yes Surrogate key: initial value = 1 Increment = 1 Name char(100) Email char(50) No SpotID Foreign key Reference: PARKING Notes: See the red parts Char is not a data type, char(50) is a data type. If you use char, you need to specify the max length When you can use other data types, do not use char. For example, it is better to use int for MonthlyCost instead of using char

In-class Exercise 2 Transform this diagram into tables IST210 In-class Exercise 2 Transform this diagram into tables BUILDING(BuildingName, Address) APARTMENT(BuildingName, ApartmentID, NumberOfBedrooms, NumberofBaths, Rent)

In-class Exercise 2 BUILDING(BuildingName, Address) IST210 BUILDING(BuildingName, Address) APARTMENT(BuildingName, ApartmentID, NumberOfBedrooms, NumberofBaths, Rent) BUILDING table Column Name Data Type Key Required Remarks BuildingName Address APARTMENT table Column Name Data Type Key Required Remarks BuildingName ApartmentID NumberOfBed NumberOfBath Rent

BUILDING(BuildingName, Address) IST210 BUILDING(BuildingName, Address) APARTMENT(BuildingName, ApartmentID, NumberOfBedrooms, NumberofBaths, Rent) BUILDING table Column Name Data Type Key Required Remarks BuildingName Char(20) Primary key Yes Address Char(100) Format: street, city, state, zip code APARTMENT table Column Name Data Type Key Required Remarks BuildingName Char(20) Primary key, foreign key Yes Reference: BUILDING ApartmentID int Primary key NumberOfBed float NumberOfBath Rent

IST210 BUILDING table Column Name Data Type Key Required Remarks BuildingName Char(20) Primary key Yes Address Char(100) Format: street, city, state, zip code APARTMENT table Column Name Data Type Key Required Remarks BuildingName Char(20) Primary key, foreign key Yes Reference: BUILDING ApartmentID int Primary key NumberOfBed float NumberOfBath Rent Notes: ApartmentID should NOT be a surrogate key. In real scenarios, we are using some meaningful ApartmentIDs, such as 100 or 201 instead of a meaningless system-generated id. Use float for #ofBed, #ofBath, and Rent. Because #ofBath could be 1.5 and rent could be $890.50, which are not integers.

In-class Exercise 3 Transform this diagram into tables IST210 In-class Exercise 3 Transform this diagram into tables STUDENT(StudentID, StudentName, Email) COURSE(CourseID, CourseName, Instructor) REGISTRATION(StudentID, CourseID)

In-class Exercise 3 STUDENT(StudentID, StudentName, Email) IST210 STUDENT(StudentID, StudentName, Email) COURSE(CourseID, CourseName, Instructor) REGISTRATION(StudentID, CourseID) STUDENT table Column Name Data Type Key Required Remarks StudentID StudentName Email COURSE table Column Name Data Type Key Required Remarks CourseID CourseName Instructor REGISTRATION table Column Name Data Type Key Required Remarks StudentID CourseID

STUDENT(StudentID, StudentName, Email) IST210 STUDENT(StudentID, StudentName, Email) COURSE(CourseID, CourseName, Instructor) REGISTRATION(StudentID, CourseID) STUDENT table Column Name Data Type Key Required Remarks StudentID int Primary key Yes Surrogate key: initial value = 1 Increment = 1 StudentName Char(100) Email Char(50) No COURSE table Column Name Data Type Key Required Remarks CourseID Char(20) Primary key Yes Format: DepartmentName + CourseNumber CourseName Char(50) Instructor Char(100) No REGISTRATION table Column Name Data Type Key Required Remarks StudentID int Primary key, foreign key Yes Reference: STUDENT CourseID Char(20) Reference: COURSE

IST210 STUDENT table Column Name Data Type Key Required Remarks StudentID int Primary key Yes Surrogate key: initial value = 1 Increment = 1 StudentName Char(100) Email Char(50) No COURSE table Column Name Data Type Key Required Remarks CourseID Char(20) Primary key Yes Format: DepartmentName + CourseNumber CourseName Char(50) Instructor Char(100) No REGISTRATION table Column Name Data Type Key Required Remarks StudentID int Primary key, foreign key Yes Reference: STUDENT CourseID Char(20) Reference: COURSE Notes: A CourseID should not be integer, for example, “IST210” is a courseID. CourseName for IST210 is “Organization of the data”.

E-R Diagram  Tables Entity  Table Entity name  Table name IST210 E-R Diagram  Tables Entity  Table Entity name  Table name Identifier  Primary key Attributes  Attributes Relationship  Foreign key or a new table Specify the attribute properties

IST210 Attendance check?