Assignment title: Information
Part A: Relational Database Design (30 marks)
Consider the following relational schema and answer questions below.
Person (Id, TFN, Name, Phone)
PolicyOwner (PersonId, PolicyNumber, TFN, StartDate)
InsurancePolicy (PolicyNumber, AgentNumber, PremiumAmount, CoverageAmount)
Agent (AgentNumber, Name, Phone, OfficeNumber)
Id is the primary key for the Person relation and TFN (Tax File Number) is another candidate
key for the Person relation. This relation has two candidate keys.
is the primary key for the PolicyOwner relation and is another candidate key for the PolicyOwner relation. This relation also has
two candidate keys. StartDate is the date when this policy was first created. PersonID is a
foreign key referencing Person.Id. TFN is a foreign key referencing Person.TFN.
PolicyNumber is a foreign key referencing InsurancePolicy.PolicyNumber.
PolicyNumber is the primary key for the InsurancePolicy relation.
AgentNumber is a foreign key referencing Agent.AgentNumber.
AgentNumber is the primary key for the Agent relation.
1. List all of the nontrivial FDs in the InsurancePolicy relation, including those implied by a
key. Do not include redundant FDs. Is the InsurancePolicy relation in BCNF? Explain briefly
your answer. Note that it is possible for several, different insurance policies to have the
same agent assigned (that is, to have the same agent number listed in the AgentNumber
attribute). Does this kind of redundancy cause any update anomalies? Can we normalise
this relation in order to remove this redundancy?
2. List all of the nontrivial FDs in the Person relation, including those implied by a key. Is the
Person relation in BCNF? Explain your answer. If the Person relation is not in BCNF,
decompose the Person relation into relations that are in BCNF.
3. List all of the nontrivial FDs in the PolicyOwner relation, including those implied by a key.
Which normal form is this relation (PolicyOwner) in? If it's not in BCNF, decompose the
PolicyOwner relation into BCNF.