Presentation is loading. Please wait.

Presentation is loading. Please wait.

IT – som værktøj Bent Thomsen Institut for Datalogi Aalborg Universitet.

Similar presentations


Presentation on theme: "IT – som værktøj Bent Thomsen Institut for Datalogi Aalborg Universitet."— Presentation transcript:

1 IT – som værktøj Bent Thomsen Institut for Datalogi Aalborg Universitet

2 Introduction to databases Bent Thomsen

3 Who uses databases? Everybody! –Every time you use your credit card, you (indirectly) use a database –When you book a flight you use a database –When you take out insurance or a mortgage, you use a database –When you contact public services –When you buy something online

4 Classes of database users Workers on the scene –End user: The person who makes queries, updates and extracts reports –Database administrator: The person responsible for managing the database system –Database designer –Application programmer: Design and implement transactions for end-users

5 Database users (cont.) Workers behind the scene –Database designers and implementers –Tool developers –Operators and maintenance personnel Run and maintain the hardware and software

6 Types of databases Large database systems –Oracle, DB2, Informix, Ingres, MS SQLServer –Huge amounts of data – high throughput Small(ish) database systems –Excell DataLists –MySQL –MS Access –Small companies, clubs, scientific data

7 Concepts of Database –A database is a collection of records that are organized for a particular purpose –A student record book with addresses and grades –An inventory with software, books, and hardware –A field is a basic fact (or data element). Name, address,… –A record is a set of fields. A student, a book –A table is a set of records. –A database consists of one or more tables. –A primary key is a field that identify a single record. In the primary key field, every record has a unique number. (Student ID Number)

8 Parts of a database Record Attribute/Field Tables Records become “rows” Attributes/fields become “columns” Rules determine the relationship between the tables and tie the data together to form a database

9 Creating a database What information are we trying to store? How do we describe the information? Phone Book/Contact entries –Name –Address –Company –Phone Number –URL/Web Page –Age –Height (in meters) –Birthday –When we added the entry

10 Data Types Binary –Database specific binary objects –Pictures, digital signatures, etc. Boolean –True/False values Character –Fixed width or variable size Numeric –Integer, Real (floating decimal point), Money Temporal –Time, Date, Timestamp

11 Phone Book/Contact Record NameCharacter AddressCharacter CompanyCharacter Phone NumberCharacter URL/Web PageCharacter AgeInteger HeightReal (float) BirthdayDate When we added the entryTimestamp

12 An example Contacts NameCompanyAddressPhone1Phone2Phone3ZipCode JoeABC12355322234321112345 JaneXYZ456342114454 ChrisPDQ7892341665514423

13 Example (cont.) Contacts IdNameCompanyAddressPhoneZipCode 1JoeABC123553212345 1JoeABC123223412345 1JoeABC123321112345 2JaneXYZ456342114454 3ChrisPDQ789234114423 3ChrisPDQ789665514423 Could be a DataList table in Excell!

14 What is a relational database? Originally developed by E.F. Codd in 1970 Organizes data into tables where each item is a row and the attributes of the item are in columns. Different from “flat file” databases because you can define “relationships” between items in different tables.

15 Normal forms E. F. Codd in 1972 wrote a paper on “Further Normalization of the Data Base Relational Model” Normal forms reduce the amount of redundancy and inconsistent dependency within databases. Codd proposed three normal forms and through the years two more have been added. Summarized from Barry Wise’s article on Database Normalization http://www.phpbuilder.com/columns/barry20000731.php3?page=1

16 The Zero Form No rules have been applied Where most people start (and stop) No room for growth Usually wastes space Contacts NameCompanyAddressPhone1Phone2Phone3ZipCode JoeABC12355322234321112345 JaneXYZ456342114454 ChrisPDQ7892341665514423

17 First Normal Form Eliminate repeating columns in each table Create a separate table for each set of related data Identify each set of related data with a primary key Contacts IdNameCompanyAddressPhoneZipCode 1JoeABC123553212345 1JoeABC123223412345 1JoeABC123321112345 2JaneXYZ456342114454 3ChrisPDQ789234114423 3ChrisPDQ789665514423 Benefits: Now we can have infinite phone numbers or company addresses for each contact. Drawback: Now we have to type in everything over and over again. This leads to inconsistency, redundancy and wasting space. Thus, the second normal form…

18 Second Normal Form Create separate tables for sets of values that apply to multiple records Relate these tables with a “foreign key”. People IdNameCompanyAddressZip 1JoeABC12312345 2JaneXYZ45614454 3ChrisPDQ78914423 PhoneNumbers PhoneIDIdPhone 115532 212234 313211 423421 532341 636655

19 Third Normal Form Eliminate fields that do not depend on the primary key. People IdNameAddressID 1Joe1 2Jane2 3Chris3 Address AddressIDCompanyAddressZip 1ABC12312345 2XYZ45614454 3PDQ78914423 PhoneNumbers PhoneIDIdPhone 115532 212234 313211 423421 532341 636655 Is this enough? Codd thought so… What about “many to many”?

20 Kinds of Relationships “One to One” –One row of a table matches exactly to another One person, one id number, one address “One to Many” –One row of a table matches many of another One person, many phone numbers “Many to Many” –One row may match many of another or many rows match one row of another

21 Fourth Normal Form In a “many to many” relationship, independent entities cannot be stored in the same table. PhoneNumbers PhoneIDPhone 15532 22234 33211 43421 52341 66655 PhoneRelations PhoneRelIDIdPhoneID 111 212 313 424 535 636 People IdNameAddressID 1Joe1 2Jane2 3Chris3 Address AddressIDCompanyAddressZip 1ABC12312345 2XYZ45614454 3PDQ78914423

22 Fifth Normal Form The “very esoteric” one that is probably not required to get the most out of your database. “The original table must be reconstructed from the tables into which it has been broken down.” The rule ensures that you have not created any extraneous columns and all the tables are only as large as they need to be.

23 The Normal Forms First Form –Eliminate replicated data in tables –Create separate tables for each set of related data –Identify each set of related data with a primary key Second Form –Create separate tables for sets of values that apply to multiple records –Relate the tables with a foreign key Third Form –Eliminate fields that do not depend on the primary key Fourth Form –In many-to-many relationships, independent entities cannot be stored in the same table

24 Why normalize? Increases the integrity of the data Reduces redundancy Improves efficiency Although normalization can be hard, it is worth it in the long run.

25 What do I need to remember? Keep normalization in mind. Don’t replicate data in a table. If you break the rules, know why you are breaking the rules and do it for a good reason.

26 All you need to know about SQL in 30 minutes (or less) SQL = Structured Query Language

27 Basic SQL Commands Creating tables with CREATE Adding data with INSERT Viewing data with SELECT Removing data with DELETE Modifying data with UPDATE Destroying tables with DROP

28 Creating tables with CREATE Generic form CREATE TABLE tablename ( column_name data_type attributes…, … ) Table and column names can’t have spaces or be “reserved words” like TABLE, CREATE, etc.

29 Phone Book/Contact Record NameCharacter AddressCharacter CompanyCharacter Phone NumberCharacter URL/Web PageCharacter AgeInteger HeightReal (float) BirthdayDate When we added the entryTimestamp

30 Phone Book/Contact Table CREATE TABLE contacts ( NameVARCHAR(40), Address VARCHAR(60), Company VARCHAR(60), Phone VARCHAR(11), URLVARCHAR(80), AgeINT, HeightFLOAT, BirthdayDATE, WhenEnteredTIMESTAMP ); Plan your tables very carefully! Once created, they are difficult to change!

31 Phone Book/Contact Table CREATE TABLE contacts ( ContactIDINT PRIMARY KEY, NameVARCHAR(40), Address VARCHAR(60), Company VARCHAR(60), Phone VARCHAR(11), URLVARCHAR(80), AgeINT, HeightFLOAT, BirthdayDATE, WhenEnteredTIMESTAMP ); If you are going to use the relational nature of a database, don’t forget you need to have a unique way to access records! There is a way to make the key automatically increment, so you don’t have to worry about which one is next.

32 Adding data with INSERT Generic Form INSERT INTO tablename (column_name,…) VALUES (value,…)

33 Inserting a record into ‘contacts’ INSERT INTO contacts (contactid,name,address,company,phone,url,age,height,birthday,whenentered) VALUES (1,‘Joe’,’123 Any St.’,’ABC’, ’800-555-1212’,‘http://abc.com’,30,1.9, ’6/14/1972’, now());

34 Inserting a partial record INSERT INTO contacts (contactid,name,phone) VALUES (2,’Jane’,’212-555-1212’);

35 Viewing data with SELECT Generic Form SELECT column,… FROM table,… WHERE condition GROUP BY group_by_expression HAVING condition ORDER BY order_expression The most used command Probably the most complicated also If used improperly, can cause very long waits because complex computations

36 A few simple SELECTs SELECT * FROM contacts; –Display all records in the ‘contacts’ table SELECT contactid,name FROM contacts; –Display only the record number and names SELECT DISTINCT url FROM contacts; –Display only one entry for every value of URL.

37 Refining selections with WHERE The WHERE “subclause” allows you to select records based on a condition. SELECT * FROM contacts WHERE age<10; –Display records from contacts where age<10 SELECT * FROM contacts WHERE age BETWEEN 18 AND 35; –Display records where age is 18-35

38 Additional selections The “LIKE” condition –Allows you to look at strings that are alike SELECT * FROM contacts WHERE name LIKE ‘J%’; –Display records where the name starts with ‘J’ SELECT * FROM contacts WHERE url LIKE ‘%.com’; –Display records where url ends in “.com”

39 Removing data with DELETE Generic Form DELETE FROM table WHERE condition; DELETE FROM contacts WHERE age<13;

40 Modifying data with UPDATE Generic Form UPDATE table SET column=expression WHERE condition; UPDATE contacts SET company=‘AOL’ WHERE company=‘Time Warner’;

41 Destroying tables with DROP Generic Form DROP TABLE tablename; DROP TABLE contacts;

42 More about SELECT

43 “Normal Forms” and SELECT Good database design using the normal forms requires data to be separated into different tables SELECT allows us to join the data back together We can use “views” to create virtual tables

44 Joining together tables SELECT name,phone,zip FROM people, phonenumbers, address WHERE people.addressid=address.addressid AND people.id=phonenumbers.id; People IdNameAddressID 1Joe1 2Jane2 3Chris3 Address AddressIDCompanyAddressZip 1ABC12312345 2XYZ45614454 3PDQ78914423 PhoneNumbers PhoneIDIdPhone 115532 212234 313211 423421 532341 636655

45 General form of SELECT/JOIN SELECT columns,… FROM left_table join_type JOIN right_table ON condition; SELECT name,phone FROM people JOIN phonenumbers ON people.id=phonenumbers.id;

46 ORDER BY The “ORDER BY” clause allows you to sort the results returned by SELECT. SELECT * FROM contacts ORDER BY company; SELECT * FROM contacts ORDER BY company, name;

47 Views You can use “CREATE VIEW” to create a virtual table from a SELECT statement. CREATE VIEW contactview AS (SELECT name,phone,zip FROM people,phonenumbers,address WHERE people.id=phonenumbers.id AND people.addressid=address.addressid);

48 Finishing off SQL is a large language –You have seen some basic commands –Takes time and effort to learn –Mainly needed for powerusers –Lots of stuff we haven’t talked about E.g. security, multiple users, program accessing DB, … –Many database systems now use graphical user interfaces instead of SQL directly


Download ppt "IT – som værktøj Bent Thomsen Institut for Datalogi Aalborg Universitet."

Similar presentations


Ads by Google