Introduction to MS Access: creating tables, keys, and relationships BSAD 141 Dave Novak Topics Covered Brief introduction to MS Access Name and save a DB file Create tables and keys Create and enforce relationships Convert a partial ERD to design in Access Examples of both entity integrity and referential integrity using Access Example Important to note! If you are having trouble keeping up with the lecture or having some type of technical problems, you may need to read through the book and notes and work through the examples These will walk you through the basic features in MS Access and guide you through table and key creation as well as how to create relationships between tables Example: Partial ERD Consider a relationship between a manager and a project Assume the following: Each manager can manage up to 5 different projects simultaneously Each manager must manage at least one project Each project is assigned to only 1 manager (there are no co-manager leads on the project) When entered into the DBMS, each project must be assigned to a manager Example: Partial ERD Draw the partial ERD discuss degree, connectivity, and existence Two Types of RDBMS Integrity Rules 1) Entity Integrity Guarantees each entity (where each row in a table represents a unique entity) has a valid and unique PK (no missing or repeat values) 2) Referential Integrity All FK values (on the many side of the relationship) must first exist in the parent table (values must be first be entered conform to entity integrity on the one side of the relationship) 1
Two Types of RDBMS Integrity Rules In practice this means that once you have established the correct relationships between the tables in relational DB, enter the data for all tables on the ONE side of the relationship before entering any data for any table on the MANY side of the relationship Building Tables in Access Create a DB file called class-example1 Build 2 separate tables that correspond to the partial ERD you just drew Attributes for (ID, FirstName, LastName, Address, Salary) Attributes for Project (ProjectID, ProjectName, Duration, Phase) Model the relationship in Access and enforce referential integrity Building Tables in Access 1) Create the shell or empty tables to begin with 2) Specify the data type for each attribute (ID (txt), FirstName (txt), LastName (txt), Address (txt), Salary (currency)) Project (ProjectID (txt), ProjectName (txt), Duration (txt), Phase(txt)) Link the tables using a Foreign Key Using our ERD and what you know about the location of Foreign Keys FK: Which table does the FK appear in? What is the FK attribute? Go into design view and add the FK attribute Enter Data in Table: Entity Integrity Error Complete Table ID FirstName LastName Address Salary Mary Wells 1 North St. $78,000 ID FirstName LastName Address Salary 123-76-8823 Mary Wells 1 North St. $78,000 Just use 5 attributes and enter 3 records I give you You get an error message if you violate entity integrity rules 2
Enter Data in Project Table Project ProjectID ProjectName Duration Phase Populate the FK attribute: Referential Integrity Error Project PRJ-145 Health Care Database 14 months 2 PRJ-147 Traveler's Insurance Payroll System 26 months 1 PRJ-151 Capital Finance Highway 41 7 months 1 PRJ-187 Economic Analysis UVM Expansion 9 months 3 Just use the 4 attributes and enter the 4 records I give you! ProjectID ProjectName Duration Phase ID PRJ-145 Health Care Database 14 months 2 756-98-2222 Traveler's Insurance Payroll PRJ-147 System 26 months 1 756-98-2222 PRJ-151 Capital Finance Highway 41 7 months 1 123-76-8823 Economic Analysis UVM PRJ-187 Expansion 9 months 3 654-98-0033 We will end up with a referential integrity violation Referential Integrity One of the FK attribute values in the Project Table (the M side of the relationship) does not exist in the parent table (the Table the one side of the relationship). There is NO manager ID 654-98-0033, so that ID value cannot be assigned to a project ID? ID FirstName LastName Address Salary Referential Integrity and Tables The specific value you enter for any FK attribute value must FIRST exist in the parent table Example: I cannot be assigned to teach a section of 141 (or any other class) if I am not first listed in the professor / teacher table You have a value for ID that exists in the table 123-76-8823 Mary Wells 1 North St. $78,000 A systematic process to control / reduce redundancy and improve integrity in a RDB that involves organize all data into tables and columns Minimize duplicate data Minimize or avoid data modification issues Simplify queries Typically a trade-off between higher levels of normalization and processing speed As redundancy is reduced, the time it takes the DBMS to process a query or extract data can increase Higher levels of normalization may not always be desired where processing speed is critical 3
Hrs Proj Proj# ProjName ProjStartDate Emp# EmpName EmpAddress JobClass HrBillRate Worked 15 UVM DB Design 10/15/2009 12 John Jones 14 Green St. Elect. Eng. 85 30 15 UVM DB Design 10/15/2009 34 Sally Smith 14 Green St. DB Designer 100 20 Y 15 UVM DB Design 10/15/2009 22 Homer Simpson 34 Blue Ave. Sys Analyst 50 40 21 Health Care Evaluation 7/1/2009 12 J. Jones 14 Green St. Elect. Eng. 85 15 Y 21 Health Care Evaluation 7/1/2009 35 Jill Wilson 876 Lake Rd. Programmer 60 45 21 Health Care Evaluation 7/1/2009 34 Sally Smith 14 Green St. DSS Analyst 70 40 21 Health Care Evaluation 7/1/2009 22 Homer Simpson 34 Blue Ave. DB Designer 90 15 30 Roadway B/C 9/15/2010 34 Sally Smith 14 Green St. Economist 75 50 Y 30 Roadway B/C 9/15/2010 35 Jill Wilson 876 Lake Rd. Programmer 60 75 We want to convert this single table DB file to a relational DBMS format There are clearly some redundancy issues with the data How do we address redundancy via normalization and organize the data into relational tables? Step 1 The current format is just an Excel worksheet, not a relational DBMS Identify attributes of each entity (or fields to be placed in each table) Step 2 Create tables and columns (attributes) needed to capture all data in a relational format Attributes and data related to a specific entity in one table and attributes and data related to another entity in a different table Design tables to minimize need to enter redundant information What do we do with attributes that pertain to both employee and project? Step 3 Consider relationship connectivity (1:M, M:M) may be a trial and error process What type of relationship best captures the data relationships we have here? Can employees work on more than 1 project at a time, or only 1 project at a time? Is each project staffed by only 1 employee, or can each project be staffed my multiple employees? We can tell by looking at the data in the Excel table Step 4 Draw the partial ERD 4
Summary Introduction to MS Access Name and save a DB file Create tables and keys Create and enforce relationships Convert a partial ERD to design in Access Examples of both entity integrity and referential integrity using Access Example 5