LSP 121 Week 2 Normalization and Advanced Queries.
-
Upload
amice-mcdowell -
Category
Documents
-
view
224 -
download
2
Transcript of LSP 121 Week 2 Normalization and Advanced Queries.
LSP 121
Week 2Normalization and Advanced Queries
Normalization
• Let’s create a database for a car club• What if one person owns multiple cars? (One
owner can have many cars, so this is 1:M relationship)
• Create a separate table for just the cars• How do you “relate” the two tables together?
Normalization ExampleCar Club (originally)Member ID (primary key)Member NameMember AddressMember CityMember StateMember ZipMember PhoneDues Paid?National Member?these fields repeat 1 to n times
Model of CarMake of CarYear of Car
Member TableMember ID (primary key)NameAddressCityStateZipPhoneDues Paid?National Member?
Car Table
Model of CarMake of CarYear of CarMember ID (nota primary key here!)
Primary Key in Member Table?Foreign Key in Car Table?1:M
Relationship
Another ExampleStudent Records
Student ID (primary key)NameAddressCityStateZipPhonethese fields repeat 1 to n times
Class NameGradeNumber Credits
MajorMinorDegree Sought
Student Info
Student IDNameAddressCityStateZipPhoneMajorMinorDegree Sought
Grades
Class NameGradeNumber CreditsStudent ID
Before
After
Let’s Consider the Following:Sales Transactions at a Clothing Store
Customer IDCustomer Last NameCustomer PhoneCustomer Cityfollowing fields repeat 1 to n times: Sales Transaction Date Sales Amount Item Clearance Item?
Let’s first create the two tables using paper and pencil.
Relationships
• If:– you create two tables, and– the first table has a primary key, and – you carry that primary key over to the second
table as a foreign key, and– the primary key and the foreign key are spelled
the same and have the same type• Then Access will automatically create a
relationship between the two tables
Relationships
• You can also create a relationship between the two tables by hand
• Go to the Tools drop-down menu and click on Relationships
• Add the two tables to the view, click on one of the Student IDs and drag it over to the other Student ID and un-click
• Check Enforce Referential Integrity (you don’t want children records without parents)
Why Relational?
• Eliminates redundancy• Makes adding data easier• Allows for more secure access to only parts of
the data
• Now let’s create our tables and enter our data into Access (data is on the next slide)
Data1 Smith 555-5555 Palos Heights2 Chen 666-6666 LaGrange3 Wilson 777-7777 Chicago
3/3/09 20.45 Shirt Y 13/3/09 5.99 Scarf N 13/4/09 29.99 Jeans Y 3
This is the foreign key
Simple Queries
• To create an Access query, don’t use the query wizard. Instead, create query in Design view
• Let’s see how Access does it• List all customer names and phone numbers• List customer name, sales date, sale price and
item name of all clearance items sold • List customer name, sales date, sale price and
item name of all clearance items sold on 3/3/09
Queries
• You can look for something after a certain date IF the data was stored as date/time and you say >1/1/2004
• Dates should be entered with # before and after the date, and can be in many different formats, ie #1/1/2004#, #January 1, 2004#, #1-Jan-2004#
Queries
• Logical OR - You can look for records in the state of Indiana or Illinois by saying “IL” OR “IN”
• You can also say: In (“IL”, “IN”, “OH”)• Logical AND - you can make multiple entries in
the query boxes. For example, in the State field enter “IL” and then in the Size field enter <3
Queries
• Logical AND - You can also use an AND in one field. For example, in the Size field you can enter >=3 AND <=9
• A slightly easier way of doing this is using the BETWEEN operator: Between 3 and 9
• Possible operators include =, <>, <, >, <=, >=• Let’s stop here for now and do Activity 3
Queries That Calculate
• When performing a query, you can aggregate the data
• You can perform a Count, Sum, Avg, Max, Min, StDev, Var(iance), First, and Last
• Count, First, and Last can be performed on types counter, number, currency, date/time, yes/no, text, memo, and OLE object
• Sum, Avg, Max, Min, StDev, Var can be performed on types on counter, number, currency, date/time, and yes/no
Example
• Say you have a database for a vet (the pets database on QRC website)
• If you want to find the average weight and height of all pets: (you may have to click on View / Totals)
Field: Pet ID Weight Height
Total: Count Avg Avg
Show: X X X
Example
• What if you want to find the average height and weight for all dogs?
Field: Weight Height Type of Animal
Total: Avg Avg Group By
Show: X X X
Criteria: “Dog”
Example
• What if you want to find the minimum and maximum weight for all dogs?
Field: Weight Weight Type of Animal
Total: Min Max Group By
Show: X X X
Criteria: “Dog”
More Examples
• You can also perform totals on groups of records.
• For example, suppose you want to count how many different types of pets the vet has on record
Field: Type of Animal Pet ID
Total: Group By Count
Show X X
Further Examples?
• Let’s play with the Pets database some more
• Now we can do Activity 4