database systems overview

36
Database Systems Hans-Petter Halvorsen S. Adams. Dilbert. Available: http://dilbert.com

Upload: dinhnhan

Post on 01-Jan-2017

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Database Systems Overview

DatabaseSystems

Hans-PetterHalvorsen

S.Adams.Dilbert.Available:http://dilbert.com

Page 2: Database Systems Overview

OldfashionDatabase(Data-storage)Systems

Nottoolongago,thiswastheonlydata-storagedevicemostcompaniesneeded.Thosedaysareover.

Page 3: Database Systems Overview

RequirementsAnalysis

Design

Implementation

Testing

Maintenance

Planning

TheSoftwareDevelopment

Lifecycle

Deployment

Page 4: Database Systems Overview

DatabaseSystemsADatabaseisastructuredwaytostorelotsofinformation.Theinformationisstoredindifferenttables.- “Everything”todayisstoredindatabases!Examples:• Bank/Accountsystems• InformationinWebpagessuchasFacebook,Wikipedia,YouTube,etc.

• Fronter,TimeEdit,etc.• …lotsofotherexamples!

Page 5: Database Systems Overview

5

DatabaseERDiagramExample:

Page 6: Database Systems Overview

DatabaseManagementSystems(DBMS)• MicrosoftSQLServer

– Enterprise,Developerversions,etc.(Professionaluse)– Expressversionisfreeofcharge

• Oracle• MySQL (ownedbyOracle,butpreviouslyownedbySunMicrosystems)-

MySQLcanbeusedfreeofcharge(opensourcelicense),WebsitesthatuseMySQL:YouTube,Wikipedia,Facebook

• MicrosoftAccess• IBMDB2• Sybase• MariaDB• MongoDB• etc.

Page 7: Database Systems Overview

DatabaseTypes• RelationDatabase/SQLDatabases– MicrosftSQLServer– Oracle– MySQL– MariaDB– etc.

• NoSQLDatabases– MongoDB– etc.

Page 8: Database Systems Overview

8

DatabaseTypesSQLvs.NoSQL

Page 9: Database Systems Overview

DatabaseModelling

Hans-PetterHalvorsen,M.Sc.

Page 10: Database Systems Overview

DatabaseModelling

• Thelogicalstructureofthedatabase• ERDiagram(EntityRelationship)

Page 11: Database Systems Overview

DatabaseDesign– ERDiagramERDiagram(Entity-RelationshipDiagram)• UsedforDesignandModelingofDatabases.• SpecifyTablesandrelationship betweenthem(PrimaryKeysandForeignKeys)

PrimaryKey PrimaryKeyForeignKey

TableName

TableName

RelationalDatabase.InarelationaldatabaseallthetableshaveoneormorerelationwitheachotherusingPrimaryKeys(PK)andForeignKeys(FK).Note!YoucanonlyhaveonePKinatable,butyoumayhaveseveralFK’s.

ColumnNames

Example:

Page 12: Database Systems Overview

DatabaseDesignTools• Visio• PowerDesigner• CAERwin– CAERwinDataModelerCommunityEdition– CommunityEditionisFree,25objectslimit– SupportforOracle,SQLServer,MySQL,ODBC,Sybase

• ToadDataModeler• ASimpledesignerisalsoincludedwithSQLServer(physicalmodel,notlogicalmodel)

Page 13: Database Systems Overview

Database- “BestPractice”• Tables:Useuppercaseandsingular formintablenames– notplural,e.g.,

“STUDENT”(notstudents)• Columns:UsePascalnotation,e.g.,“StudentId”• PrimaryKey:

• Ifthetablenameis“COURSE”,namethePrimaryKeycolumn“CourseId”,etc.

• “Always”useInteger andIdentity(1,1) forPrimaryKeys.UseUNIQUEconstraintforothercolumnsthatneedstobeunique,e.g.RoomNumber

• SpecifyRequired Columns(NOTNULL)– i.e.,whichcolumnsthatneedtohavedataornot

• Standardizeonfew/theseDataTypes:int,float,varchar(x),datetime,bit• UseEnglishfortableandcolumnnames• Avoidabbreviations!(UseRoomNumber– notRoomNo,RoomNr,...)

Page 14: Database Systems Overview

DatabaseDesign– MicrosoftVisio

14

1

2

3

WewilluseVisiotoDesignourDatabase

SelecttheproperTemplate

Page 15: Database Systems Overview

TableName PrimaryKey(PK)

ForeignKey(FK)

ERDiagramExample- Visio

Page 16: Database Systems Overview
Page 17: Database Systems Overview

17

PK PK

PK

PK

PK

PK

FK

FKFK

FKFKFK

PK

PK

FKFK

FKFK

PK-FKRelationship

PK-FKRelationships

TableName

TableName

TableName

TableNameTableName

TableName

TableName TableName

PK– PrimaryKey,FK– ForeignKey

ERDiagramExampleusingbuilt-inDesignerinMicrosoftSQLServer

Page 18: Database Systems Overview

Hans-PetterHalvorsen,M.Sc.

Page 19: Database Systems Overview

SQLServer

• Mainparts:SQLServerEngine+ManagementStudio

• SQLServerStandard,Developer,Web,Enterprise,Datacenter,...

• FreeAlternative:SQLServerExpress• SQLAzureDatabase– Cloud-basedversion

Page 20: Database Systems Overview

MicrosoftSQLServerSQLServerconsistsofaDatabaseEngineandaManagementStudio.TheDatabaseEnginehasnographicalinterface- itisjustaservicerunninginthebackgroundofyourcomputer(preferableontheserver).TheManagementStudioisgraphicaltoolforconfiguringandviewingtheinformationinthedatabase.Itcanbeinstalledontheserverorontheclient(orboth).

Page 21: Database Systems Overview

MicrosoftSQLServer

1

2

3

4

5

WriteyourQueryhere

TheresultfromyourQuery

YourDatabase

YourTables

YourSQLServer

Page 22: Database Systems Overview

MicrosoftSQLServer– CreateaNewDatabase

1

2

Nameyoudatabase,e.g.,WEATHER_SYSTEM

Page 23: Database Systems Overview

MicrosoftSQLServer– TipsandTricks

Makesuretouncheckthisoption!

Doyougetanerrorwhentryingtochangeyourtables?

Page 24: Database Systems Overview

SQLStructuredQueryLanguage

Hans-PetterHalvorsen,M.Sc.

Page 25: Database Systems Overview

SQL– StructuredQuerylanguage

• insert into STUDENT (Name , Number, SchoolId)values ('John Smith', '100005', 1)

• select SchoolId, Name from SCHOOL

• select * from SCHOOL where SchoolId > 100

• update STUDENT set Name='John Wayne' where StudentId=2

• delete from STUDENT where SchoolId=3

ADatabaseComputerLanguagedesignedforManagingDatainRelationalDatabaseManagementSystems(RDBMS)QueryExamples:

Wehave4differentQueryTypes(CRUD):INSERT,SELECT,UPDATEand DELETE

CRUD – Create(Insert),Read(Select),UpdateandDelete

Page 26: Database Systems Overview

CreateTablesusingtheDesignerToolsinSQLServerEvenifyoucando“everything”usingtheSQLlanguage,itissometimeseasiertodosomethinginthedesignertoolsintheManagementStudioinSQLServer.Insteadofcreatingascriptyoumayaswelleasilyusethedesignerforcreatingtables,constraints,insertingdata,etc.

Select“NewTable…”: Next,thetabledesignerpopsupwhereyoucanaddcolumns,datatypes,etc.

1 2

Inthisdesignerwemayalsospecifyconstraints,suchasprimarykeys,unique,foreignkeys,etc.

Page 27: Database Systems Overview

CreateTableswiththe“DatabaseDiagram”

3

4

5

1 2

YoumayselectexistingtablesorcreatenewTables

CreateNewTable

EnterColumns,selectDataTypes,PrimaryKeys,etc.

Page 28: Database Systems Overview

if not exists (select * from dbo.sysobjects where id = object_id(N'[SCHOOL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

CREATE TABLE [SCHOOL](

[SchoolId] [int] IDENTITY(1, 1) NOT NULL PRIMARY KEY,[SchoolName] [varchar](50) NOT NULL UNIQUE,[Description] [varchar](1000) NULL,[Address] [varchar](50) NULL,[Phone] [varchar](50) NULL,[PostCode] [varchar](50) NULL,[PostAddress] [varchar](50) NULL,

) GO

if not exists (select * from dbo.sysobjects where id = object_id(N'[CLASS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

CREATE TABLE [CLASS](

[ClassId] [int] IDENTITY(1, 1) NOT NULL PRIMARY KEY,[SchoolId] [int] NOT NULL FOREIGN KEY REFERENCES [SCHOOL]

([SchoolId]),[ClassName] [varchar](50) NOT NULL,[Description] [varchar](1000) NULL,

) GO

CreateTablesusingSQL

Page 29: Database Systems Overview

GetDatafrommultiple tablesinasingleQueryusingJoins

selectSchoolName,CourseNamefromSCHOOLinnerjoinCOURSEonSCHOOL.SchoolId =COURSE.SchoolId

Example:

YoulinkPrimaryKeysandForeignKeystogether

Page 30: Database Systems Overview

CreatingViews usingtheEditor

1

2

3

4Addnecessarytables

SavetheView

GraphicalInterfacewhereyoucanselectcolumnsyouneed

Page 31: Database Systems Overview

CreatingViews usingSQL

31

IF EXISTS (SELECT nameFROM sysobjectsWHERE name = 'CourseData' AND type = 'V')

DROP VIEW CourseDataGO

CREATE VIEW CourseDataAS

SELECTSCHOOL.SchoolId, SCHOOL.SchoolName, COURSE.CourseId, COURSE.CourseName,COURSE.Description

FROMSCHOOL INNER JOIN COURSE ON SCHOOL.SchoolId = COURSE.SchoolIdGO

YoucanUsetheViewasanordinarytableinQueries:

AViewisa“virtual”tablethatcancontaindatafrommultipletables

InsidetheViewyoujointhedifferenttablestogetherusingtheJOIN operator

TheNameoftheView

CreateView:

UsingtheView:select * from CourseData

Page 32: Database Systems Overview

StoredProcedureIFEXISTS(SELECTname

FROMsysobjectsWHEREname ='StudentGrade'AND type='P')

DROPPROCEDUREStudentGradeOG

CREATEPROCEDUREStudentGrade@Studentvarchar(50),@Coursevarchar(10),@Gradevarchar(1)

AS

DECLARE@StudentId int,@CourseId int

selectStudentIdfromSTUDENTwhereStudentName =@Student

selectCourseId fromCOURSEwhereCourseName =@Course

insertintoGRADE(StudentId,CourseId,Grade)values (@StudentId,@CourseId,@Grade)GO

execute StudentGrade 'John Wayne', 'SCE2006', 'B'

AStoredProcedureislikeMethodinC#- itisapieceofcodewithSQLcommandsthatdoaspecifictask– andyoureuseit

InputArguments

Internal/LocalVariables

ProcedureName

SQLCode(the“body”oftheStoredProcedure)

Note!Eachvariablestartswith@

CreateStoredProcedure:

UsingtheStoredProcedure:

Page 33: Database Systems Overview

Trigger

IF EXISTS (SELECT nameFROM sysobjectsWHERE name = 'CalcAvgGrade' AND type = 'TR')

DROP TRIGGER CalgAvgGradeGO

CREATE TRIGGER CalcAvgGrade ON GRADEFOR UPDATE, INSERT, DELETEAS

DECLARE@StudentId int,@AvgGrade float

select @StudentId = StudentId from INSERTED

select @AvgGrade = AVG(Grade) from GRADE where StudentId = @StudentId

update STUDENT set TotalGrade = @AvgGrade where StudentId = @StudentId

GO

ATriggerisexecutedwhenyouinsert,updateordeletedatainaTablespecifiedintheTrigger.

InsidetheTriggeryoucanuseordinarySQLstatements,createvariables,etc.

NameoftheTrigger

SpecifywhichTabletheTriggershallworkon

Internal/LocalVariablesSQLCode(The“body”oftheTrigger)

SpecifywhatkindofoperationstheTriggershallacton

Note!“INSERTED”isatemporarilytablecontainingthelatestinserteddata,anditisveryhandytouseinsideatrigger

CreatetheTrigger:

Page 34: Database Systems Overview

Summary• DBMS – DatabaseManagementSystem• SQL – StructuredQueryLanguage.ADatabaseComputerLanguagedesignedforManagingDatainRelationalDatabaseManagementSystems(RDBMS)

• ERDiagram– EntityRelationship.UsedforDesignandModelingofDatabases.SpecifyTablesandrelationshipbetweenthem(PrimaryKeysandForeignKeys)

Page 35: Database Systems Overview

References• NTNU.(2013).TDT4140Systemutvikling.Available:

http://www.ntnu.no/studier/emner/TDT4140• UiO.(2013).INF1050- Systemutvikling.Available:

http://www.uio.no/studier/emner/matnat/ifi/INF1050/• O.Widder.(2013).geek&poke.Available:http://geek-and-poke.com• B.Lund.(2013).Lunch.Available:http://www.lunchstriper.no,

http://www.dagbladet.no/tegneserie/lunch/• S.Adams.Dilbert.Available:http://dilbert.com

Page 36: Database Systems Overview

Hans-PetterHalvorsen,M.Sc.

UniversityCollegeofSoutheastNorwaywww.usn.no

E-mail:[email protected]:http://home.hit.no/~hansha/