What is a database? Logiskt sammanhängande mängd av data, med en därtill hörande betydelse, strukturerad och försedd med data avsedda för ett visst ändamål, med en viss användargrupp i åtanke och återspeglande någon aspekt av världen. What is a database management system? A set of programs allowing a user to create and maintain databases. Introduction to databases
Database system Application programs / Queries Programs for query management Programs for data management MetadataDatabase User / Programmer DBMS
Why databases? Persistence Sharing Data independence
Hierarchical databases Network databases Relational databases Types of databases
A relation scheme is a set of attributes Example: PERSON(SS#, Name, Age, Salary) Every attribute has a domain Example: Name has the domain String, Age has the domain Integer A tuple for a relation scheme gives a value to each attribute in the scheme Example: (778899, John Smith, 26, 13000) The value for each attribute must be in the domain A relation is a set of tuples Relational databases
SS# Name Age Salary Eva Svensson Per Jonsson Sven Olsson Pia Eriksson PERSON Relation scheme Relation A relation can be viewed as a table without duplicates Relational databases
school pupil course teacher subject library borrower loan book school((sNr), address) pupil((eNr), firstName, surName) teacher((lNr), firstName, surName) subject((äNamn), courseBook) course((sNr, eNr, lNr, cName) library((bName), address) borrower((lNr), firstName, surName) book((ISBN), title) loan((bName, lNr, ISBN, date) Reality Subset Model Database structure From reality to database
Why design? Why not a simple table? ISBNTitleAuthorLibraryAddressBorrowerBorrowerAddDate 12345Mitt livPelleStoraStorgatan 19KalleKarlavägen Ditt livLisaStoraStorgatan 19KalleKarlavägen Vårt livPelleStoraStorgatan 19VeraVerdandig Vilket liv!LisaStoraStorgatan 19MonaMånvägen Mitt livLisaStoraStorgatan 19KalleKarlavägen StickningJohanStoraStorgatan 19KalleKarlavägen MatlagningEvaStoraStorgatan 19VeraVerdandig MatematikVeraStoraStorgatan 19MonaMånvägen Library borrower loan book library((bNamn), address) borrower((lNr), firstName, surName) book((ISBN), title) loan((bNamn, lNr, ISBN, date) Database design
An unnormalised relation scheme Name Regno Share Salary Model Per ErikssonABC Volvo Eva Olsson ABC Volvo Per ErikssonDEF Mercedes Per ErikssonGHI Toyota Pia JohnssonGHI Toyota Pia JohnssonBCD Ford Bo PerssonCDE Volvo
Problems with unnormalised schemes Redundancy Update anomalies
Functional dependencies A functional dependency means that one attribute uniquely determines another attribute. Example: Name --> Salary This functional dependency means that if two tuples have the same value on Name, then they must have the same value on Salary.
Functional dependencies Which ones of the functional dependencies are satisfied by the relation above? A --> B AB --> C CD --> B CD --> E
Keys A key in a relation scheme is an attribute (or a minimal set of attributes) that functionally determines all the other attributes in the scheme. Thus, a key uniquely identifies a tuple in a relation. What is the key in this relation scheme? MOVIE(Film, Theatre, Time, Price)
First normal form A relation scheme is in first normal form if all attribute values are atomic. SS#SurnameFirst name SvenssonGunnar, Sven OlssonKarin, Eva SS#SurnameFirst name SvenssonGunnar SvenssonSven OlssonKarin OlssonEva Not 1NF 1NF What are the keys?
Second normal form A relation scheme is in second normal form if every attribute is functionally dependent on the whloe key. Name Regno Salary Per ErikssonABC Per ErikssonDEF Pia JohnssonGHI Pia JohnssonBCD Name Regno Per ErikssonABC123 Per ErikssonDEF456 Pia JohnssonGHI789 Pia JohnssonBCD321 Name Salary Per Eriksson25000 Pia Johnsson30000
Third normal form A relation scheme is in third normal form if each attribute is functionally dependent on the key, the whole key, and nothing else than the key.
Third normal form If an attribute does not satisfy the condition for 3NF, it is removed from the relation scheme. It will form a new relation scheme together with the attributes it is functionally dependent on. Example: PERSON(SS#, Name, Country, Number_of_inhabitants) SS# --> Name, Country Country --> Number_of_inhabitants Number_of_inhabitants does not satisfy the condition for 3NF. It is removed and will form a new relation schema together with Country: PERSON(SS#, Name, Country) COUNTRY(Country, Number_of_inhabitants)
Third normal form Decompose the following relation scheme to relation schemes in 3NF. BOOK(Copy#, SS#, Date-of-loan, Return-date, Library, Library_address, Person_address, Title) A copy of a book with a title is borrowed by a person, who has an address, at a date and is returned at another date. The copy of the book resides at a library with an address.
school pupil course teacher subject library borrower loan book school((sNr), address) pupil((eNr), firstName, surName) teacher((lNr), firstName, surName) subject((äNamn), courseBook) course((sNr, eNr, lNr, cName) library((bName), address) borrower((lNr), firstName, surName) book((ISBN), title) loan((bName, lNr, ISBN, date) Reality Subset Model Database structure From reality to database
From conceptual schema to database Main steps 1. Every object type becomes a relation scheme 2. Every 1-1 and 1-m attribute of an object type becomes an attribute in the corresponding relation scheme 3. Every m-m attribute becomes a relation scheme - the attributes in this scheme are the key attributes in the associated relation schemes
From conceptual schema to database PERSONCAR StringInteger String owns (m,m,p,p) regno model agename