4.5. CREATE TABLE people ( STRING ssn, STRING name, STRING address, STRING phone_number, PRIMARY KEY(ssn) ); CREATE TABLE clients ( STRING ssn; STRING work_phone_number PRIMARY KEY(ssn), FOREIGN KEY (ssn) REFERENCES people ); CREATE TABLE brokers ( STRING ssn; STRING phone_extension_number, PRIMARY KEY(ssn), FOREIGN KEY (ssn) REFERENCES people ); CREATE TABLE accounts ( INT number, DATE date_opened, ??? status, STRING handled_by_broker_ssn, PRIMARY KEY(number), FOREIGN KEY(handled_by_broker_ssn) REFERENCES brokers(ssn) ); CREATE TABLE offices ( STRING phone_number, STRING address, PRIMARY KEY(phone_number), UNIQUE(address) ); CREATE TABLE has_account ( STRING client_ssn, STRING account_number, STRING office_phone_number, PRIMARY_KEY(client_ssn, office_phone_number) FOREIGN KEY (client_ssn) REFERENCES clients(ssn), FOREIGN KEY (account_number) REFERENCES accounts(number), FOREIGN KEY (office_phone_number) REFERENCES offices(phone_number) ); CREATE TABLE works_in ( STRING office_phone_number, STRING broker_ssn, DATE since, PRIMARY KEY(office_phone_number), FOREIGN KEY (office_phone_number) REFERENCES offices(phone_number), FOREIGN KEY(broker_ssn) REFERENCES brokers(ssn) ); CREATE TABLE managed_by ( STRING broker_ssn, STRING office_phone_number, DATE since, PRIMARY KEY (broker_ssn), UNIQUE (office_phone_number), FOREIGN KEY (office_phone_number) REFERENCES offices(phone_number), FOREIGN KEY(broker_ssn) REFERENCES brokers(ssn) ); 4.6. Starting out with an Office, going through IsHandledBy to a Broker, then back over through WorksIn, to an Office, you may end up with a different Office than you started with. This is because there is no specification for how IsHandledBy and WorksIn relate to each other.