1
|
- Week 7
- LBSC 690
- Information Technology
|
2
|
- Questions
- Relational database design
- Microsoft Access
|
3
|
- Database
- Collection of data, organized to support access
- Models some aspects of reality
- DataBase Management System (DBMS)
- Software to create and access databases
- Relational Algebra
- Special-purpose programming language
|
4
|
- Field An “atomic” unit of data
- number, string, true/false, …
- Record A collection of related fields
- Table A collection of related records
- Each record is one row in the table
- Each field is one column in the table
- Primary Key The field that identifies a record
- Values of a primary key must be unique
- Database A collection of tables
|
5
|
|
6
|
- Which students are in which courses?
- What do we need to know about the students?
- first name, last name, email, department
- What do we need to know about the courses?
- course ID, description, enrolled students, grades
|
7
|
|
8
|
- Save space
- More rapid updates
- Every fact only needs to be updated once
- More rapid search
- Finding something once is good enough
- Avoid inconsistency
- Changing data once changes it everywhere
|
9
|
- Tables represent “relations”
- Course, course description
- Name, email address, department
- Named fields represent “attributes”
- Each row in the table is called a “tuple”
- The order of the rows is not important
- Queries specify desired conditions
- The DBMS then finds data that satisfies them
|
10
|
|
11
|
- For simple problems (like the homework)
- Start with “binary relationships”
- Pairs of fields that are related
- Group together wherever possible
- Add keys where necessary
- For more complicated problems
- Entity relationship modeling (LBSC 670)
|
12
|
|
13
|
- Data modeling for join is complex
- Join are expensive to compute
- Both in time and storage space
- But it is joins that make databases relational
- Projection and restriction also used in flat files
|
14
|
- “Primary Key” uniquely identifies a record
- e.g. student ID in the student table
- “Compound” primary key
- Synthesize a primary key with a combination of fields
- e.g., Student ID + Course ID in the enrollment table
- “Foreign Key” is primary key in the other table
- Note: it need not be unique in this table
|
15
|
- Foreign key values must exist in other table
- If not, those records cannot be joined
- Can be enforced when data is added
- Associate a primary key with each foreign key
- Helps avoid erroneous data
- Only need to ensure data quality for primary keys
|
16
|
|
17
|
|
18
|
- Project chooses columns
- Restrict chooses rows
- Based on their contents
- e.g. department ID =3D “HIST”
- These can be specified together
- SELECT Student ID, Dept WHERE Dept =3D “History”
|
19
|
- Each SELECT contains a single WHERE
- Numeric comparison
- Boolean operations
- e.g., Name =3D “John” AND Dept <> “HISTR=
21;
|
20
|
- Design a database to match passengers with available flights on corpor=
ate
jets
- Companies phone in available seats
- They want to know about interested passengers
- Passengers call up looking for flights
- They want to know about available flights
- These things happen in no particular order
|
21
|
- Identify the tables you will need
- First decide what data you will save
- What questions will be asked?
- Then decide how to group/split it into tables
- Start with binary relations if that helps
- Design the queries
- Using join, project and restrict
- Add primary and foreign keys where needed
|
22
|
- Work in groups of 3 or 4
- Brainstorm data requirements for 5 minutes
- Do customers care about the price?
- Do companies care what passengers weigh?
- Develop tables and queries for 15 minutes
- Don’t get hung up on one thing too long
- Compare you answers with another group
- Should take about 5 minutes
|
23
|
- Surely you didn’t expect this in the notes :)
|
24
|
- Natural language
- Goal is ease of use
- e.g., Show me the last names of students in CLIS
- Ambiguity sometimes results in errors
- Structured Query Language (SQL)
- Consistent, unambiguous interface to any DBMS
- Simple command structure:
- e.g., SELECT Last name FROM Students WHERE Dept=3DCLIS
- Useful standard for inter-process communications
- Visual programming (e.g., Microsoft Access)
- Unambiguous, and easier to learn than SQL
|
25
|
- Create a database called M:\planes.mdb
- File->New->Blank Database
- Specify the fields (columns)
- “Create a Table in Design View”
- Fill in the records (rows)
- Double-click on the i=
con
for the table
|
26
|
- Enter field name
- Must be unique, but only within the same table
- Select field type from a menu
- Use date/time for times
- Use text for phone numbers
- Designate primary key (right mouse button)
- Save the table
- That’s when you get to assign a table name
|
27
|
- Open the table
- Enter new data in the bottom row
- A new (blank) bottom row will appear
- Close the table
- No need to “save” – data is stored automatically<=
/li>
|
28
|
- Copy N:\share\notes\plane.* to M:\
- “Create Query in Design View”
- Choose two tables, Flight and Company
- Pick each field you need using the menus
- Unclick “show” to not project
- Enter a criterion to “restrict”
- Save, exit, and reselect to run the query
|
29
|
- Joins are automatic if field names are same
- Otherwise, drag a line between the fields
- Sort order is easy to specify
- Queries form the basis for reports
- Reports give good control over layout
- Use the report wizard - the formats are complex
|
30
|
- Forms manage input better than raw tables
- Invalid data can be identified when input
- Graphics can be incorporated
|
31
|
- Databases are a good choice when you have
- Lots of data
- A problem that contains inherent relationships
- Design before you implement
- This is just another type of programming
- The mythical person-month applies!
- Join is the most important concept
- Project and restrict just remove undesired stuff
|
32
|
- Why is software development different from manufacturing car?
- If it would take one person three months, why does it take four peop=
le
SIX months?
|
33
|
- Sequential constraints
- Communication
- Training
|
34
|
- Rules of thumb
- 1/3 specification
- 1/6 coding
- 1/2 test planning, testing, and fixing!
- Add time for coding to learn as you go, but don’t take time aw=
ay
from the other parts!
- Reread the section on “gutless estimating” if you are
tempted
|