VBA and Databases (see Chapter 14...

26
VBA and Databases (see Chapter 14 ) Kipp Martin February 29, 2012 1

Transcript of VBA and Databases (see Chapter 14...

Page 1: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

VBA and Databases(see Chapter 14 )

Kipp Martin

February 29, 2012

1

Page 2: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Lecture Files

Files for this module:

I retailerSQL.m

I retailer.accdb

2

Page 3: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Outline

Motivation

Modern Database Systems

SQL

Bringing Data Into MATLAB/Excel

3

Page 4: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Motivation

Motivation: Getting data from external sources!

Data that is needed for a model may reside in text files (done).

Data that is needed for a model may reside in other worksheetsand workbooks (done).

Data that is needed for a model may reside in modern relationaldatabases (Access, SQL Server, Oracle, DB2)

Data that is needed for a model may reside in XML files (nextlecture).

4

Page 5: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

Characteristics of a database management system (DBMS):

I Data Manipulation Language get information in and out ofthe database. SQL is most important standard

I System Catalog or Data Dictionary meta database, e.g. atables listing all the tables, keys, attributes, indicies, etc.

I Utility programs

1. scheduled backups

2. user account management

I Report Generation

5

Page 6: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

Characteristics of a database management system (DBMS):

I Data import and export

I Creation of SQL based procedures and interface toprogramming language

I Locking mechanisms

I Transaction processing – must end up completed (committed)or completely undone

6

Page 7: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

Modern database systems:

I Popular Commercial Packages: Oracle, DB2/Informix, SQLServer, Sybase, Ingres

I Open Source: MySQL, PostgreSQL, InterBase, Firebird,SAP DB

I Desktop: MS Access is the most popular

7

Page 8: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

Key Ideas:

I Relation or table: a flat file. Think of this as a matrix withrows and columns. A range in an Excel spreadsheet

I Record: a row in the table

I Field or attribute: a column in the table

I Primary Key: a subset of the fields with the property that fora given setting of the key values there is a unique value for allother fields. For example, Social Security number. Every tablemust have a primary key.

I Composite or multi-field key: is a key with more than oneattribute

8

Page 9: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

Key Ideas:

I Universal Relation: a relation containing all the attributes inthe database. This is often called a flat file database. Manydatabases are simple flat files

I Relational Database: A database that allows for multipletables which can be joined together in order to get information

I SQL: Structured Query Language. A way to get informationin and out of a database. SQL is to the database world whatHTML is to the Web

9

Page 10: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

See retailer.accdb

The key for this database is rep e mail and sku num (we have amulti-attribute key).

10

Page 11: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

Problems with a flat file database:

I Redundancy – consider the retailer example, we may havehundreds or even thousands of SKUs supplied by the samesupplier. Why store the same supplier address thousands oftimes?

I Deletion Anomalies – if we discontinue all of the SKUs of aparticular supplier and delete these records, we loseinformation about the supplier

I Insertion Anomalies – when we insert a new record we maycreate inconsistencies

I Null Values – How do we treat null values: leave it blank,insert a zero, or a special character?

11

Page 12: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

I Big breakthrough was the development of a relationaldatabase!

I A relational database allows multiple users throughout acorporation to easily and directly access all of the data.

I The concept of a relational database is due to Ted Codd, anIBM research fellow, who wrote the theory paper in 1970.This paper was promptly ignored by IBM.

I Larry Ellison and his associates (Ed Oates) realized thepotential. Ellison was a COBOL programmer who wanted toget rich. He did. Ellison has a U of C connection.

12

Page 13: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

Normalized Relational Database:

13

Page 14: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

Normalized Relational Database:

14

Page 15: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Modern Database Systems

A one-to-many join:

15

Page 16: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

SQL

I Don Chamberlin and Ray Boyce at IBM developed aprototype of SQL and published their results.

I This is the Gold Standard for databases. All majorcommercial databases support SQL.

16

Page 17: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

SQL

Refer back to the retailer table:

Example query: Get the e-mail of everyone supplying part number577

Here is the SQL for the query:

SELECT retailer.rep_e_mail, retailer.sku_num

FROM retailer

WHERE retailer.sku_num=577

17

Page 18: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

SQLThe result of the query is

rep e mail sku num

[email protected] [email protected] 577

A slight modification of the previous query is:

SELECT retailer.rep_e_mail, retailer.sku_num

FROM retailer

WHERE retailer.sku_num=577

ORDER BY retailer.rep_e_mail DESC

with result:

rep e mail sku num

[email protected] [email protected] 577

18

Page 19: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

SQL

The SQL for the query Get the city of everyone supplying red partsis:

SELECT retailer.city, retailer.color

FROM retailer

WHERE retailer.color="red"

the result of the query is

city color

Ulvade redHonda red

19

Page 20: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

SQL

Here is the SQL for a join – get the cities that supply sku 577

SELECT orders.sku_num, supplier.city

FROM orders INNER JOIN supplier ON

orders.sup_id = supplier.sup_id

WHERE orders.sku_num=577

the result of the query is

sku num city

577 Plano577 Lajitas

20

Page 21: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

SQL

Note the key words used in these examples:

I SELECT: specifies the fields you want

I FROM: specifies the table you want

I WHERE: specifies the criterion or criteria you want

A few other key words:

1. DISTINCT

2. GROUP BY

3. HAVING

4. ORDER BY

5. AS

21

Page 22: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

SQL

Some References:

I See Section 14.4 of Albright

I A nice tutorialhttp://www.w3schools.com/SQl/default.asp

I Test some queries in the tutorialhttp://www.w3schools.com/SQl/sql_tryit.asp

22

Page 23: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Bringing Data Into MATLAB/Excel

Key Idea:

I In most modern organizations most of the data resides indatabases (Oracle, DB2, SQL Server, etc.).

I We want to bring that data into MATLAB/Excel and dosomething useful with it.

I Therefore, MATLAB/Excel must communicate with thedatabase server!

I In Excel (with VBA) and MATLAB we are going to send SQLquerier to a database server and get the results back.

How is this done in practice?

23

Page 24: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

Bringing Data Into Excel

There are two primary ways for Excel to talk to database servers.

I Use Web Services

I Use Microsoft ADO (ActiveX Data Objects)

We are going to use Web Services – far, far, more generic thanADO! The way we access databases in Excel will be indentical tohow we do this in MATLAB.

It is best to use open, platform independent, standards.

24

Page 25: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

In Class Exercise - Practice SQL

25

Page 26: VBA and Databases (see Chapter 14 )faculty.chicagobooth.edu/kipp.martin/root/htmls/coursework/36104/... · VBA and Databases (see Chapter 14 ) Kipp Martin February 29, ... I A nice

In Class Exercise - Practice SQL

Query 1: Get all records in the database

Query 1: Get all records and sort in decreasing order by price

Query 1: Get all records in the database from 1956

Query 1: Get all records in the database recored by the Veloursor Jimmy and The Crestones

Query 5: Query the doowop database and using a single SQLcommand return each unique song title and a count of how manytimes that title appears in the database. Order the result indescending order by count.

26