Presentation is loading. Please wait.

Presentation is loading. Please wait.

DATABASE DESIGN I IST 210: Organization of Data IST210 1.

Similar presentations


Presentation on theme: "DATABASE DESIGN I IST 210: Organization of Data IST210 1."— Presentation transcript:

1 DATABASE DESIGN I IST 210: Organization of Data IST210 1

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

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

4 Two-Step Approach: Step 2 IST210 4 Data Modeling (Ch.4) 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

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

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

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

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

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

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

11 IST210 11 Employe e ID NameOffice Number Office Phone Locker ID 4Tom28191821 Locker ID Locker Room Locker Size 1#210 5#25 EMPLOYEELOCKER Employee 4 owns locker 1; locker 1 belongs to employee 4. Employe e ID NameOffice Number Office Phone 4Tom2819182 Locker ID Locker Room Locker Size Employe eID 1#2104 5#25 EMPLOYEELOCKER Locker ID Locker Room Locker Size Employe eID 1#2104 5#25 EMPLOYEELOCKER Employe e ID NameOffice Number Office Phone Locker ID 4Tom28191821 Option A Option B Option C

12 1:1 Relationship IST210 12 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize, EmployeeID) Option A 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.) *foreign key: italic

13 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 IST210 13

14 1:N Relationship IST210 14 Employe e ID Last Name First Name Office Number Office Phone 4GreenTom2819182 Locker ID Locker Room Locker Size 1#210 5#25 EMPLOYEE LOCKER Relationship is not captured yet!Add foreign key ? LockerID LockerRoom LockerSize EmployeeID Name OfficeNumber OfficePhone LOCKER EMPLOYEE Assume one-to-many relationship

15 IST210 15 Employe e ID NameOffice Number Office Phone Locker ID 4Tom28191821, 5 Locker ID Locker Room Locker Size 1#210 5#25 EMPLOYEELOCKER Employee 4 owns locker 1 and 5. Employe e ID NameOffice Number Office Phone 4Tom2819182 Locker ID Locker Room Locker Size Employee ID 1#2104 5#254 EMPLOYEELOCKER EMPLOYEELOCKER Employ eeID NameOffice Number Office Phone Locker ID 4Tom28191821, 5 Option A Option B Option C Locker ID Locker Room Locker Size Employee ID 1#2104 5#254

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

17 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 IST210 17

18 N:M Relationship IST210 18 Employe e ID NameOffice Number Office Phone 4Tom2819182 10John7771829 Locker ID Locker Room Locker Size 1#210 5#25 EMPLOYEE LOCKER Relationship is not captured yet! Add foreign key ? LockerID LockerRoom LockerSize EmployeeID Name OfficeNumber OfficePhone LOCKER EMPLOYEE Assume many-to-many relationship

19 IST210 19 Employe e ID NameOffice Number Office Phone Locker ID 4Tom28191821, 5 10John77718291 Locker Number Locker Room Locker Size 1#210 5#25 EMPLOYEELOCKER Employee 4 owns locker 1 and 5. Employee 10 owns locker 1. Employe e ID NameOffice Number Office Phone 4Tom2819182 10John7771829 Locker ID Locker Room Locker Size Employe eID 1#2104, 10 5#254 EMPLOYEELOCKER Option A Option B

20 IST210 20 Employe e ID NameOffice Number Office Phone 4Tom2819182 10John7771829 Locker ID Locker Room Locker Size 1#210 5#25 EMPLOYEELOCKER Employee ID Locker ID 41 45 101 ASSIGNMENT NOT SIMPLY ADDING FOREIGN KEYS! CREATE ANOTHER TABLE! Employee 4 owns locker 1 and 5. Employee 10 owns locker 1.

21 N:M Relationship IST210 21 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

22 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 IST210 22

23 Relationship Summary IST210 23 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) 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) EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone) LOCKER(LockerID, LockerRoom, LockerSize, EmployeeID) 1:N  add a foreign key to the many-side table 1:1  add a foreign key to either table or

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

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

26 In-class Exercise 1: Notes IST210 26 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.

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

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

29 In-class Exercise 2: Notes IST210 29 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

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

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

32 In-class Exercise 3: Notes IST210 32 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.

33 E-R Diagram  Tables IST210 33 1.Entity  Table Entity name  Table name Identifier  Primary key Attributes  Attributes 2.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 3.Specify the attribute properties

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

35 IST210 35 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column NameData TypeKeyRequiredRemarks LockerID LockerRoom LockerSize LOCKER table Column NameData TypeKeyRequiredRemarks EmployeeID Name OfficeNumber OfficePhone LockerID

36 IST210 36 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column NameData Type LockerIDint LockerRoomchar(10) LockerSizefloat LOCKER table Column NameData Type EmployeeIDint Namechar(50) OfficeNumberchar(20) OfficePhonechar(12) LockerIDint 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.aspxhttp://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

37 IST210 37 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column NameData Type LockerIDPrimary key LockerRoom LockerSize LOCKER table Column NameKey EmployeeIDPrimary key Name OfficeNumber OfficePhone LockerIDForeign key Key Specify primary key and foreign key(s) in the table

38 IST210 38 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column NameRequired LockerIDYes LockerRoomYes LockerSizeYes LOCKER table Column NameRequired EmployeeIDYes NameYes OfficeNumberNo OfficePhoneNo LockerIDYes 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

39 IST210 39 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column Name Remarks LockerIDSurrogate key: initial value = 1 Increment = 1 LockerRoom LockerSizeDefault value: 10 LOCKER table Column Name Remarks EmployeeIDSurrogate key: initial value = 1 Increment = 1 Name OfficeNumber OfficePhoneFormat: ###-###-#### LockerIDReference: 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

40 IST210 40 EMPLOYEE(EmployeeID, Name, OfficeNumber, OfficePhone, LockerID) LOCKER(LockerID, LockerRoom, LockerSize) EMPLOYEE table Column Name Data Type KeyRequire d Remarks LockerIDintPrimary key YesSurrogate key: initial value = 1 Increment = 1 LockerRoomchar(10)Yes LockerSizefloatYesDefault value: 10 LOCKER table Column Name Data Type KeyRequiredRemarks EmployeeIDintPrimary key YesSurrogate key: initial value = 1 Increment = 1 Namechar(50)Yes OfficeNumberchar(20)No OfficePhonechar(12)NoFormat: ###-###-#### LockerIDintForeign key YesReference: LOCKER Now we complete converting an E-R diagram to tables Next, we can use SQL to create a real database

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

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

43 IST210 43 PARKING table Column Name Data Type KeyRequiredRemarks UserIDintPrimary key YesSurrogate key: initial value = 1 Increment = 1 Namechar(100)Yes Emailchar(50)No SpotIDintForeign key YesReference: PARKING USER table Column Name Data Type KeyRequiredRemarks SpotIDintPrimary key YesSurrogate key: initial value = 1 Increment = 1 Locationchar(50)Yes MonthlyCostintYesDefault: 50 PARKING(SpotID, Location, MonthlyCost) USER(UserID, Name, Email, SpotID)

44 IST210 44 PARKING table Column Name Data Type KeyRequire d Remarks UserIDintPrimary key YesSurrogate key: initial value = 1 Increment = 1 Namechar(100)Yes Emailchar(50)No SpotIDintForeign key YesReference: PARKING USER table Column Name Data Type KeyRequire d Remarks SpotIDintPrimary key YesSurrogate key: initial value = 1 Increment = 1 Locationchar(50)Yes MonthlyCostintYesDefault: 50 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 PARKING(SpotID, Location, MonthlyCost) USER(UserID, Name, Email, SpotID)

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

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

47 IST210 47 BUILDING table Column Name Data Type KeyRequiredRemarks BuildingNameChar(20)Primary key, foreign key YesReference: BUILDING ApartmentIDintPrimary keyYes NumberOfBedfloatYes NumberOfBathfloatYes RentfloatYes APARTMENT table Column Name Data Type KeyRequiredRemarks BuildingNameChar(20)Primary key Yes AddressChar(100)YesFormat: street, city, state, zip code BUILDING(BuildingName, Address) APARTMENT(BuildingName, ApartmentID, NumberOfBedrooms, NumberofBaths, Rent)

48 IST210 48 BUILDING table Column Name Data Type KeyRequiredRemarks BuildingNameChar(20)Primary key, foreign key YesReference: BUILDING ApartmentIDintPrimary keyYes NumberOfBedfloatYes NumberOfBathfloatYes RentfloatYes APARTMENT table Column Name Data Type KeyRequiredRemarks BuildingNameChar(20)Primary key Yes AddressChar(100)YesFormat: street, city, state, zip code 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.

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

50 IST210 50 STUDENT(StudentID, StudentName, Email) COURSE(CourseID, CourseName, Instructor) REGISTRATION(StudentID, CourseID) STUDENT table Column Name Data TypeKeyRequiredRemarks CourseID CourseName Instructor COURSE table Column Name Data Type KeyRequiredRemarks StudentID StudentName Email Column Name Data Type KeyRequiredRemarks StudentID CourseID REGISTRATION table In-class Exercise 3

51 IST210 51 STUDENT(StudentID, StudentName, Email) COURSE(CourseID, CourseName, Instructor) REGISTRATION(StudentID, CourseID) STUDENT table Column Name Data TypeKeyRequiredRemarks CourseIDChar(20)Primary key YesFormat: DepartmentName + CourseNumber CourseNameChar(50)Yes InstructorChar(100)No COURSE table Column Name Data TypeKeyRequiredRemarks StudentIDintPrimary key YesSurrogate key: initial value = 1 Increment = 1 StudentNameChar(100)Yes EmailChar(50)No Column Name Data Type KeyRequiredRemarks StudentIDintPrimary key, foreign keyYesReference: STUDENT CourseIDChar(20)Primary key, foreign keyYesReference: COURSE REGISTRATION table

52 IST210 52 STUDENT table Column Name Data TypeKeyRequiredRemarks CourseIDChar(20)Primary key YesFormat: DepartmentName + CourseNumber CourseNameChar(50)Yes InstructorChar(100)No COURSE table Column Name Data Type KeyRequiredRemarks StudentIDintPrimary key YesSurrogate key: initial value = 1 Increment = 1 StudentNameChar(100)Yes EmailChar(50)No Column Name Data Type KeyRequiredRemarks StudentIDintPrimary key, foreign keyYesReference: STUDENT CourseIDChar(20)Primary key, foreign keyYesReference: COURSE REGISTRATION table Notes: A CourseID should not be integer, for example, “IST210” is a courseID. CourseName for IST210 is “Organization of the data”.

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

54 Attendance check? IST210 54


Download ppt "DATABASE DESIGN I IST 210: Organization of Data IST210 1."

Similar presentations


Ads by Google