改进对象到数据的映射
Small Business Development Center 的 client 表先前在定义时未包含客户的联系人信息。数据库团队最初的想法是直接在 client 表中添加 contact_name 和 contact_email 列。不过,基于您对数据组织的判断,您反对这一做法。将来,同一个联系人可能会在多张表中被引用。在本练习中,您将为客户与联系人信息分别定义更合理的表结构,更清晰地分离 client 与 contact 对象。
回顾之前 client 表的定义:
CREATE TABLE client (
id SERIAL PRIMARY KEY,
name VARCHAR(50),
site_url VARCHAR(50),
num_employees SMALLINT,
num_customers INTEGER
);
本练习是课程的一部分
创建 PostgreSQL 数据库
练习说明
- 创建
contact表,包含列:id(主键)、name(最大长度 50)、email(最大长度 50)。 - 通过添加
contact_id列作为外键来修改client表。
交互式实操练习
通过完成这段示例代码来试试这个练习。
-- Create the contact table
___ ___ ___ (
-- Define the id primary key column
___ SERIAL ___ ___,
-- Define the name column
___ ___(50) NOT NULL,
-- Define the email column
___ VARCHAR(___) NOT NULL
);
-- Add contact_id to the client table
ALTER TABLE ___ ADD ___ INTEGER NOT NULL;
-- Add a FOREIGN KEY constraint to the client table
ALTER TABLE ___ ADD CONSTRAINT fk_c_id FOREIGN KEY (___) REFERENCES ___(id);