开始使用免费开始使用

改进对象到数据的映射

Small Business Development Center 的 client 表先前在定义时未包含客户的联系人信息。数据库团队最初的想法是直接在 client 表中添加 contact_namecontact_email 列。不过,基于您对数据组织的判断,您反对这一做法。将来,同一个联系人可能会在多张表中被引用。在本练习中,您将为客户与联系人信息分别定义更合理的表结构,更清晰地分离 clientcontact 对象。

回顾之前 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);
编辑并运行代码