A relation schema is a type definition, and a relation is an instance of that schema. For example, student (ss#, name) is a relation schema and
123-456-222 John 234-567-999 Mary
is a relation based on that schema
Copyright ©2020 McGraw-Hill Education. All rights reserved. No reproduction or distribution without the prior written consent of McGraw-Hill Education. Solution 2.10
No, s id would not be a primary key, since there may be two (or more) tuples for a single student, corresponding to two (or more) advisors. The primary key should then consist of the two attributes s id, i id
Copyright ©2020 McGraw-Hill Education. All rights reserved. No reproduction or distribution without the prior written consent of McGraw-Hill Education.
a. The primary keys of the various schemas are underlined. We allow customers to have more than one account, and more than one loan.
branch(branch name, branch city, assets)
customer (ID, customer name, customer street, customer city) loan (loan number, branch name, amount)
borrower (ID, loan number)
account (account number, branch name, balance) depositor (ID, account number)
b. The foreign keys are as follows:
i. For loan: branch name referencing branch
ii. For borrower: Attribute ID referencing customer and loan number referencing loan
iii. For account: branch name referencing branch.
iv. For depositor: Attribute ID referencing customer and account number referencing account
Copyright ©2020 McGraw-Hill Education. All rights reserved. No reproduction or distribution without the prior written consent of McGraw-Hill Education.
Solution 2.14 a. ∏ID, person_name (σcompany_name = “BigBank” (works))
b. ∏ID, person_name, city (employee ⋈employee.id=works.id (σcompany_name = “BigBank” (works))
c. ∏ID, person_name, street, city (σ(company_name = “BigBank” ∧ salary > 10000) (Works ⋈employee.id=works.id employee))
d. ∏ID, person_name (σemployee.city=company.city(employee ⋈employee.ID=works.ID works ⋈works.company_name=company.company_name company))
Copyright ©2020 McGraw-Hill Education. All rights reserved. No reproduction or distribution without the prior written consent of McGraw-Hill Education.
Copyright ©2020 McGraw-Hill Education. All rights reserved. No reproduction or distribution without the prior written consent of McGraw-Hill Education. Solution 2.15
a. ∏loan number (σamount> 10000(loan))
b. ∏ID (σbalance> 6000 (depositor ⋈depositor.account number=account.account number account))
c. ∏ID (σbalance> 6000^ branch name=“Uptown” (depositor ⋈depositor.account number=account.account number account))
Solution 2.16 Nulls may be introduced into the database because the actual value is either unknown or does not exist. For example, an employee whose address has changed and whose new address is not yet known should be retained with a null address.
Copyright ©2020 McGraw-Hill Education. All rights reserved. No reproduction or distribution without the prior written consent of McGraw-Hill Education.
Solution 2.17 Declarative languages greatly simplify the specification of queries (at least, the types of queries they are designed to handle). They free the user from having to worry about how the query is to be evaluated; not only does this reduce programming effort, but in fact in most situations the query optimizer can do a much better job of choosing the best way to evaluate a query than a programmer working by trial and error.
Both functional and imperative languages require the programmer to specify a specific set of actions. Functional languages have no side-effects, that is, there is no program state to update. This avoids bugs that result from unantipated side effects. Functional languages permit the use of algebraic equivalences in query optimization. The step-by-step execution plan for actually running a database query is usually expressed in an imperative style. Imperative programming is the style most familiar to most programmers.
Copyright ©2020 McGraw-Hill Education. All rights reserved. No reproduction or distribution without the prior written consent of McGraw-Hill Education.
Solution 23.18 a. ∏ID,name(σdept name=}}Physics" (instructor))
b. ∏ID,name(instructor ⋈instructor.dept name=department.dept name (σbuilding=}} Watson" (department)))
c. ∏ID,name(student ⋈student.ID=takes.ID takes ⋈takes.course id=course.course id
σdept name=}} Comp. Sci." (course))
d. ∏ID,name(student ⋈student.ID=takes.ID σyear=2018 (takes))
e. ∏ID,name(student)–
∏ID,name(student ⋈student.ID=takes.ID (σyear=2018 (takes)))
Copyright ©2020 McGraw-Hill Education. All rights reserved. No reproduction or distribution without the prior written consent of McGraw-Hill Education.
INSTRUCTOR’SMANUAL TOACCOMPANY
SeventhEdition
AbrahamSilberschatz YaleUniversity
HenryF.Korth LehighUniversity S.Sudarshan
IndianInstituteofTechnology,Bombay
April1,2019
Copyright C ⋇ 2019A.Silberschatz,H.Korth,andS.Sudarshan
Preface Thisvolumeisaninstructor’smanualfortheSeventhEditionof DatabaseSystemConcepts byAbrahamSilberschatz,HankKorth,andS.Sudarshan.Itconsistsofanswers totheExercisesintheparenttext.
Althoughwehavetriedtoproduceaninstructor’smanualthatwillaidallofthe usersofourbookasmuchaspossible,therecanalwaysbeimprovements(improved answers,additionalquestions,sampletestquestions,programmingprojects,alternative ordersofpresentationofthematerial,additionalreferences,andsoon).Weinvite youtohelpusinimprovingthismanual.Ifyouhavebettersolutionstotheexercises orotheritemsthatwouldbeofusewith DatabaseSystemConcepts,weinviteyouto sendthemtousforconsiderationinlatereditionsofthismanual.Allcontributions will,ofcourse,beproperlycreditedtotheircontributor.Emailshouldbeaddressedto db-book-authors@cs.yale.edu.
A.S.
H.F.K
S.S.
CHAPTER 1 Introduction Exercises 1.6 Listfourapplicationsyouhaveusedthatmostlikelyemployedadatabasesystem tostorepersistentdata.
Answer:
• Banking:Foraccountinformation,transferoffunds,bankingtransactions.
• Universities:Forstudentinformation,onlineassignmentsubmissions, courseregistrations,andgrades.
• Airlines:Forreservationofticketsandscheduleinformation.
• Onlinenewssites:Forupdatingnewsandmaintainingarchives.
• Online-trade:Forproductdata,availabilityandpricinginformation,ordertrackingfacilities,andgeneratingrecommendationlists.
1.7 Listfoursignificantdifferencesbetweenafile-processingsystemanda DBMS.
Answer:
Somemaindifferencesbetweenadatabasemanagementsystemandafileprocessingsystemare:
• Bothsystemscontainacollectionofdataandasetofprogramswhichaccessthedata.Adatabasemanagementsystemcoordinatesboththephysical andthelogicalaccesstothedata,whereasafile-processingsystemcoordinatesonlythephysicalaccess.
• Adatabasemanagementsystemreducestheamountofdataduplicationby ensuringthataphysicalpieceofdataisavailabletoallprogramsauthorized tohaveaccesstoit,whereasdatawrittenbyoneprograminafile-processing systemmaynotbereadablebyanotherprogram.
• Adatabasemanagementsystemisdesignedtoallowflexibleaccesstodata (i.e.,queries),whereasafile-processingsystemisdesignedtoallowpredeterminedaccesstodata(i.e.,compiledprograms).
• Adatabasemanagementsystemisdesignedtocoordinatemultipleusers accessingthesamedataatthesametime.Afile-processingsystemisusually designedtoallowoneormoreprogramstoaccessdifferentdatafilesat thesametime.Inafile-processingsystem,afilecanbeaccessedbytwo programsconcurrentlyonlyifbothprogramshaveread-onlyaccesstothe file.
1.8 Explaintheconceptofphysicaldataindependenceanditsimportancein databasesystems.
Answer:
Physicaldataindependenceistheabilitytomodifythephysicalschemewithoutmakingitnecessarytorewriteapplicationprograms.Suchmodifications includechangingfromunblockedtoblockedrecordstorage,orfromsequential torandomaccessfiles.Suchamodificationmightbeaddingafieldtoarecord; anapplicationprogram’sviewhidesthischangefromtheprogram.
1.9 Listfiveresponsibilitiesofadatabase-managementsystem.Foreachresponsibility,explaintheproblemsthatwouldariseiftheresponsibilitywerenotdischarged.
Answer:
Ageneral-purposedatabase-managementsystem(DBMS)hasfiveresponsibilities:
a.interactionwiththefilemanager
b.integrityenforcement
c.securityenforcement
d.backupandrecovery
e.concurrencycontrol
Iftheseresponsibilitieswerenotmetbyagiven DBMS (andthetextpointsout thatsometimesaresponsibilityisomittedbydesign,suchasconcurrencycontrolonasingle-user DBMS foramicrocomputer)thefollowingproblemscan occur,respectively:
a.No DBMS candowithoutthis.Ifthereisnofilemanagerinteractionthen nothingstoredinthefilescanberetrieved.
b.Consistencyconstraintsmaynotbesatisfied.Forexample,aninstructor maybelongtoanonexistentdepartment,twostudentsmayhavethesame ID,accountbalancescouldgobelowtheminimumallowed,andsoon.
c.Unauthorizedusersmayaccessthedatabase,orusersauthorizedtoaccesspartofthedatabasemaybeabletoaccesspartsofthedatabasefor whichtheylackauthority.Forexample,alow-levelusercouldgetaccess tonationaldefensesecretcodes,oremployeescouldfindoutwhattheir supervisorsearn(whichispresumablyasecret).
d.Datacouldbelostpermanently,ratherthanatleastbeingavailableina consistentstatethatexistedpriortoafailure.
e.Consistencyconstraintsmaybeviolateddespiteproperintegrityenforcementineachtransaction.Forexample,incorrectbankbalancesmight bereflectedduetosimultaneouswithdrawalsanddepositsonthesame account,andsoon.
1.10 Listatleasttworeasonswhydatabasesystemssupportdatamanipulationusing adeclarativequerylanguagesuchas SQL,insteadofjustprovidingalibraryof CorC++functionstocarryoutdatamanipulation.
Answer:
a.Declarativelanguagesareeasierforprogrammerstolearnanduse(and evenmoresofornonprogrammers).
b.Theprogrammerdoesnothavetoworryabouthowtowritequeriesto ensurethattheywillexecuteefficiently;thechoiceofanefficientexecutiontechniqueislefttothedatabasesystem.Thedeclarativespecification makesiteasierforthedatabasesystemtomakeaproperchoiceofexecutiontechnique.
1.11 Assumethattwostudentsaretryingtoregisterforacourseinwhichthereisonly oneopenseat.Whatcomponentofadatabasesystempreventsbothstudents frombeinggiventhatlastseat?
Answer:
Theconcurrency-controlmanager,whichispartofthetransactionmanager, ensuresthatatmostonestudentwillregistersuccessfully.
1.12 Explainthedifferencebetweentwo-tierandthree-tierapplicationarchitectures. Whichisbettersuitedforwebapplications?Why?
Answer:
Inatwo-tierapplicationarchitecture,theapplicationrunsontheclientmachine anddirectlycommunicateswiththedatabasesystemrunningontheserver.In contrast,inathree-tierarchitecture,applicationcoderunningontheclient’s machinecommunicateswithanapplicationserverattheserver,anditneverdirectlycommunicateswiththedatabase.Thethree-tierarchictureisbettersuited forwebapplications.
1.13 Listtwofeaturesdevelopedinthe2000sandthathelpdatabasesystemshandle data-analyticsworkloads.
Answer:
Traditionaldatabasesystemsstoredatarow-by-row.Becausedataanalyticsoften focusononlyafewcolumnsofatable,column-storeswereintroducedtoallow fasterretrievalofthosecolumnsactuallybeingused.
Becauseofthehighprocessingdemandsofdataanalyticscombinedwith thebroaderavailabilityofparallelprocessing,themap-reduceframeworkwas introducedtofacilitatecodingparalleldata-analyticsapplications.
1.14 ExplainwhyNoSQLsystemsemergedinthe2000s,andbrieflycontrasttheir featureswithtraditionaldatabasesystems.
Answer:
NoSQLsystemsrelaxtherigidityofstoringdataintablesbyallowingadiverse setofdatatypes.Theyallowforfasterinitialapplicationdevelopment.However, NoSQLsystemslacktraditionalsystems’supportforstrongdataconsistency, insteadrelyingonaweakerconceptofeventualconsistency.
1.15 DescribeatleastthreetablesthatmightbeusedtostoreinformationinasocialnetworkingsystemsuchasFacebook.
Answer: Somepossibletablesare:
a.A users tablecontainingusers,withattributessuchasaccountname,real name,age,gender,location,andotherprofileinformation.
b.A content tablecontaininguser-providedcontent,suchastextandimages, associatedwiththeuserwhouploadedthecontent.
c.A friends tablerecordingforeachuserwhichotherusersareconnected tothatuser.Thekindofconnectionmayalsoberecordedinthistable.
d.A permissions table,recordingwhichcategoriesoffriendsareallowedto viewwhichcontentuploadedbyauser.Forexample,ausermayshare somephotoswithfamilybutnotwithallfriends.
CHAPTER 2 IntroductiontotheRelational Model Therelationalmodelremainstheprimarydatamodelforcommercialdata-processing applications.Itattaineditsprimarypositionbecauseofitssimplicity,whicheasesthe joboftheprogrammer,comparedtoearlierdatamodelssuchasthenetworkmodel orthehierarchicalmodel.Ithasretainedthispositionbyincorporatingvariousnew featuresandcapabilitiesoveritshalf-centuryofexistence.Amongthoseadditionsare object-relationalfeaturessuchascomplexdatatypesandstoredprocedures,supportfor XMLdata,andvarioustoolstosupportsemi-structureddata.Therelationalmodel’s independencefromanyspecificunderlyinglow-leveldatastructureshasalloweditto persistdespitetheadventofnewapproachestodatastorage,includingmoderncolumnstoresthataredesignedforlarge-scaledatamining.
Inthischapter,wefirststudythefundamentalsoftherelationalmodel.Asubstantialtheoryexistsforrelationaldatabases.InChapter6andChapter7,weshallexamine aspectsofdatabasetheorythathelpinthedesignofrelationaldatabaseschemas,while inChapter15andChapter16wediscussaspectsofthetheorydealingwithefficient processingofqueries.InChapter27,westudyaspectsofformalrelationallanguages beyondourbasiccoverageinthischapter(Section2.6).
Exercises 2.10 Describethedifferencesinmeaningbetweentheterms relation and relation schema. Answer:
Arelationschemaisatypedefinition,andarelationisaninstanceofthat schema.Forexample, student (ss#,name)isarelationschemaand
isarelationbasedonthatschema.
2.11 Considerthe advisor relationshownintheschemadiagraminFigure2.9,with s id astheprimarykeyof advisor .Supposeastudentcanhavemorethanone advisor.Then,would s id stillbeaprimarykeyofthe advisor relation?Ifnot, whatshouldtheprimarykeyof advisor be?
Answer:
No, s id wouldnotbeaprimarykey,sincetheremaybetwo(ormore)tuples forasinglestudent,correspondingtotwo(ormore)advisors.Theprimarykey shouldthenconsistofthetwoattributes s id,i id .
2.12 ConsiderthebankdatabaseofFigure2.18.Assumethatbranchnamesandcustomernamesuniquelyidentifybranchesandcustomers,butloansandaccounts canbeassociatedwithmorethanonecustomer.
a.Whataretheappropriateprimarykeys?
b.Givenyourchoiceofprimarykeys,identifyappropriateforeignkeys.
Answer:
a.Theprimarykeysofthevariousschemasareunderlined.Weallowcustomerstohavemorethanoneaccount,andmorethanoneloan.
branch(branch name, branch city,assets)
customer (ID,customer name, customer street,customer city) loan (loan number , branch name,amount ) borrower (ID, loan number ) account (account number , branch name,balance) depositor (ID, account number )
b.Theforeignkeysareasfollows:
i.For loan: branch name referencing branch.
ii.For borrower :Attribute ID referencing customer and loan number referencing loan
iii.For account : branch name referencing branch.
iv.For depositor :Attribute ID referencing customer and account number referencing account
2.13 ConstructaschemadiagramforthebankdatabaseofFigure2.18.
Answer:
loan_number branch_name amount loan
branch_name branch_city assets branch account_number branch_name balance account
2.14 ConsidertheemployeedatabaseofFigure2.17.Giveanexpressionintherelationalalgebratoexpresseachofthefollowingqueries:
a.FindtheIDandnameofeachemployeewhoworksfor“BigBank”.
b.FindtheID,name,andcityofresidenceofeachemployeewhoworksfor “BigBank”.
c.FindtheID,name,streetaddress,andcityofresidenceofeachemployee whoworksfor“BigBank”andearnsmorethan$10000.
d.FindtheIDandnameofeachemployeeinthisdatabasewholivesinthe samecityasthecompanyforwhichsheorheworks.
Answer:
a. ΠID,person name (σcompany name = “BigBank” (works))
b. ΠID,person name, city (employee ⋈employee.id =works.id (σcompany name = “BigBank” (works)))
c. ΠID,person name, street, city (σ(company name = “BigBank” ∧ salary > 10000) (works ⋈employee.id =works.id employee))
d. ΠID,person name (σemployee city=company city (employee ⋈employee ID=works ID works ⋈works company name=company company name company))
2.15 ConsiderthebankdatabaseofFigure2.18.Giveanexpressionintherelational algebraforeachofthefollowingqueries:
a.Findeachloannumberwithaloanamountgreaterthan$10000.
b.FindtheIDofeachdepositorwhohasanaccountwithabalancegreater than$6000.
c.FindtheIDofeachdepositorwhohasanaccountwithabalancegreater than$6000atthe“Uptown”branch.
Answer:
a. Πloan number (σamount> 10000 (loan))
b. ΠID (σbalance> 6000 (depositor ⋈depositor account number =account account number account))
c. ΠID (σbalance> 6000∧ branch name=“Uptown” (depositor ⋈depositor account number =account account number account))
2.16 Listtworeasonswhynullvaluesmightbeintroducedintoadatabase.
Answer:
Nullsmaybeintroducedintothedatabasebecausetheactualvalueiseitherunknownordoesnotexist.Forexample,anemployeewhoseaddresshaschanged andwhosenewaddressisnotyetknownshouldberetainedwithanulladdress.
2.17 Discusstherelativemeritsofimperative,functional,anddeclarativelanguages.
Answer:
Declarativelanguagesgreatlysimplifythespecificationofqueries(atleast,the typesofqueriestheyaredesignedtohandle).Theyfreetheuserfromhaving toworryabouthowthequeryistobeevaluated;notonlydoesthisreduce programmingeffort,butinfactinmostsituationsthequeryoptimizercandoa muchbetterjobofchoosingthebestwaytoevaluateaquerythanaprogrammer workingbytrialanderror.
Bothfunctionalandimperativelanguagesrequiretheprogrammertospecifya specificsetofactions.Functionallanguageshavenoside-effects,thatis,thereis noprogramstatetoupdate.Thisavoidsbugsthatresultfromunantipatedside effects.Functionallanguagespermittheuseofalgebraicequivalencesinquery optimization.Thestep-by-stepexecutionplanforactuallyrunningadatabase queryisusuallyexpressedinanimperativestyle.Imperativeprogrammingis thestylemostfamiliartomostprogrammers.
2.18 Writethefollowingqueriesinrelationalalgebra,usingtheuniversityschema.
a.FindtheIDandnameofeachinstructorinthePhysicsdepartment.
b.FindtheIDandnameofeachinstructorinadepartmentlocatedinthe building“Watson”.
c.FindtheIDandnameofeachstudentwhohastakenatleastonecourse inthe“Comp.Sci.”department.
d.FindtheIDandnameofeachstudentwhohastakenatleastonecourse sectionintheyear2018.
e.FindtheIDandnameofeachstudentwhohasnottakenanycourse sectionintheyear2018.
Answer:
a. ΠID,name (σdept name=}}Physics′′ (instructor ))
b. ΠID,name (instructor ⋈instructor .dept name=department.dept name (σbuilding=}}Watson′′ (department )))
c. ΠID,name (student ⋈student ID=takes ID takes ⋈takes course id =course course id σdept name=}}Comp Sci ′′ (course))
d. ΠID,name (student ⋈student.ID=takes.ID σyear =2018 (takes))
e. ΠID,name (student )− ΠID,name (student ⋈student ID=takes ID (σyear =2018 (takes)))