===== Week 6 Asynchronous Materials ===== ===== "TODAY" WE WILL ===== * announcements * continue with supertype/subtype entity classes * SQL: computed columns and column aliases * SQL: table aliases * SQL: joins of MORE than two tables [but did not get to today] * SQL: aggregate functions * SQL: intro to sub-selects [but did not get to today] * prep for next class ===== Reading ===== * reading for this week: * DB Reading Packet 5 - E-R modeling, part 2 * SQL Reading Packet 4 - sub-selects (and more) (also some more from SQL Reading Packet 3) ===== OTHER Announcements ===== * You should be working on Homework 4, due this FRIDAY, October 1st * EXAM 1 is coming up! * Monday, October 11th * we'll review for it during class on Monday, October 4th * this week (Week 6) is pretty normal! * a Lab Exercise this Friday, October 1st * Homework 4 due Friday, October 1st * Homework 5 coming out this weekend * NEXT week is more unusual! * We'll review for Exam 1 in class on Monday, October 4th * Week 7 Asynchronous materials posted Wednesday * NO LABS on Friday, October 8, because I'll be at a conference * AND: Homework 5 is DUE on FRiday, October 8th * BUT Homework 6 will not come out until AFTER Exam 1 * ONE MORE NOTE: * Recall: in syllabus, it notes that once example solutions for a Homework are posted, you can no longer submit work for that homework * To give you a chance to look over those example solutions BEFORE Exam 1, I will make these available EARLY on SATURDAY, OCTOBER 9th SO -- you may still submit HOMEWORK PIECES for CREDIT through 11:59 pm on FRIDAY, OCTOBER 8th ===== CONTINUING with supertype and subtype entity classes! ===== * better choices for modeling so-called IS-A relationships -- a Savings_Account IS An Account, etc. * these are also sometimes called GENERALIZATION/SPECIALIZATION relationships * how do you know when these would be useful for your model? * sometimes you just realize it -- hey, inventory items include potion items and battle items * sometimes you notice DISTINCT subsets of seemingly "optional" attributes -- that is, some attributes all the items the items in that entity class have, BUT also some distinct subsets that seem to be "optional", but make more sense when you think of them as characteristics of a subtype entity class instead; * sometimes the relationships give you clue -- you might have some relationships all instances of an entity class can have, but some you really want to limit to only some members of an entity class -- and you realize these make more sense if you think of some relationships being with a supertype entity class and some being with a subtype entity class * we have some different notation these relationships in an E-R model ...and you will be using our CS 325 standard format for these: * an entity class rectangle for EACH supertype and EACH subtype entity class * BUT the relationship lines are different here -- draw a line from each EACH supertype and EACH subtype entity class TO a small circle, labeled with d if the subclass entity classes are DISJOINT and labeled with o if the subclass entity classes are OVERLAPPING and labeled with u if the subclass entity classes are part of a UNION supertype-subtype situation * put a small u-shaped curve on the line connecting each subtype entity class to that circle, * put a hash or oval on the line connecting the supertype entity class to that circle, indicating whether a supertype instance MUST be one of subtype instances, also, or not; ====== handling ATTRIBUTES for supertype/subtype entity classes ====== * generally, we'd like a characteristic or attribute in a model to only appear ONCE, in ONE entity class' attribute list * if an attribute is meant to be for ALL instances of that supertype entity class, it goes in the supertype entity class' attribute list * SO -- for the Account scenario: Account Savings_acct Checking_acct -------- ------------- -------------- ACCT_NUM int_rate per_ck_charge acct_date_opened min_balance monthly_fee acct_balance * NOTICE these distinctive things here: * there aren't repeated attributes here! * it is QUITE common that the subtype entity classes do not have identifying attributes! (those tend to be in the supertype entity class' attribute lists) * SO -- for the Univ_person scenario: Univ_person Student Instructor ----------- -------- ---------- UNIV_ID curr_gpa salary_per_course Last_name First_name Campus_email ======= what about those UNION supertype/subtypes? ======= * odd beasties! * when you have a business rule that says "certain <really distinct categories> can do <certain important thing>", and so it turns out that making a UNION supertype entity class for "those that can do this thing" can be very useful in a model; (see the Sponsor-of-Events model example in DB Reading Packet 5) Sponsor Club Team Dept Event ------- -------- -------- --------- ----- CLUB_NUM TEAM_CODE DEPT_CODE EVENT_NUM Club_Name Sport Dept_title Event_title Is_active Season Office_num Event_date * it is QUITE common if the union supertype has few or even no attributes at the model stage! * it is QUITE common if the union subtypes all have VERY different and distinct attributes, and distinct identifying attributes! * BUT: IF there ARE common attributes for union supertypes, put those in the union supertype's entity attribute list... ======== SQL time!!! ======== -------- computed columns and column aliases! ...now moving to 325lect06-2.sql...