SQL 数据库设计:个人信息、教育、工作经验、技能和语言表格

本教程演示了如何使用 SQL 创建和优化一个数据库,包含个人信息、教育、工作经验、技能和语言表格。我们涵盖了主键、外键、唯一约束、默认值约束、检查约束和自动编号等重要概念。

初始数据表定义:

CREATE TABLE personal_info (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  gender VARCHAR(10),
  birthdate DATE,
  id_number VARCHAR(20),
  phone VARCHAR(20),
  email VARCHAR(50)
);

CREATE TABLE education (
  id INT PRIMARY KEY,
  degree VARCHAR(50),
  major VARCHAR(50),
  school VARCHAR(50),
  start_date DATE,
  end_date DATE
);

CREATE TABLE work_experience (
  id INT PRIMARY KEY,
  company VARCHAR(50),
  position VARCHAR(50),
  start_date DATE,
  end_date DATE,
  job_description VARCHAR(500)
);

CREATE TABLE skills (
  id INT PRIMARY KEY,
  skill_name VARCHAR(50),
  proficiency VARCHAR(20)
);

CREATE TABLE languages (
  id INT PRIMARY KEY,
  language_name VARCHAR(50),
  proficiency VARCHAR(20)
);

添加约束和自动编号:

CREATE TABLE personal_info (
  id INT PRIMARY KEY IDENTITY(1,1),
  name VARCHAR(50) NOT NULL,
  gender VARCHAR(10) DEFAULT 'unknown',
  birthdate DATE,
  id_number VARCHAR(20) UNIQUE,
  phone VARCHAR(20) UNIQUE,
  email VARCHAR(50) UNIQUE
);

CREATE TABLE education (
  id INT PRIMARY KEY IDENTITY(1,1),
  degree VARCHAR(50),
  major VARCHAR(50),
  school VARCHAR(50),
  start_date DATE,
  end_date DATE CHECK (end_date >= start_date),
  personal_info_id INT NOT NULL,
  FOREIGN KEY (personal_info_id) REFERENCES personal_info(id)
);

CREATE TABLE work_experience (
  id INT PRIMARY KEY IDENTITY(1,1),
  company VARCHAR(50),
  position VARCHAR(50),
  start_date DATE,
  end_date DATE CHECK (end_date >= start_date),
  job_description VARCHAR(500),
  personal_info_id INT NOT NULL,
  FOREIGN KEY (personal_info_id) REFERENCES personal_info(id)
);

CREATE TABLE skills (
  id INT PRIMARY KEY IDENTITY(1,1),
  skill_name VARCHAR(50),
  proficiency VARCHAR(20),
  personal_info_id INT NOT NULL,
  FOREIGN KEY (personal_info_id) REFERENCES personal_info(id)
);

CREATE TABLE languages (
  id INT PRIMARY KEY IDENTITY(1,1),
  language_name VARCHAR(50),
  proficiency VARCHAR(20),
  personal_info_id INT NOT NULL,
  FOREIGN KEY (personal_info_id) REFERENCES personal_info(id)
);

解释:

  • 个人信息表:
    • id:主键,自动编号。
    • name:姓名,必填。
    • gender:性别,默认值为'unknown'。
    • birthdate:出生日期。
    • id_number:身份证号码,唯一约束。
    • phone:电话号码,唯一约束。
    • email:邮箱地址,唯一约束。
  • 教育表:
    • id:主键,自动编号。
    • degree:学位。
    • major:专业。
    • school:学校。
    • start_date:开始日期。
    • end_date:结束日期,检查约束确保结束日期不早于开始日期。
    • personal_info_id:外键,指向个人信息表,确保每个教育记录都与一个个人信息记录相关联。
  • 工作经验表:
    • id:主键,自动编号。
    • company:公司名称。
    • position:职位。
    • start_date:开始日期。
    • end_date:结束日期,检查约束确保结束日期不早于开始日期。
    • job_description:工作描述。
    • personal_info_id:外键,指向个人信息表,确保每个工作经验记录都与一个个人信息记录相关联。
  • 技能表:
    • id:主键,自动编号。
    • skill_name:技能名称。
    • proficiency:熟练程度。
    • personal_info_id:外键,指向个人信息表,确保每个技能记录都与一个个人信息记录相关联。
  • 语言表:
    • id:主键,自动编号。
    • language_name:语言名称。
    • proficiency:熟练程度。
    • personal_info_id:外键,指向个人信息表,确保每个语言记录都与一个个人信息记录相关联。

通过这些约束,我们可以确保数据的一致性和完整性,并建立各个表格之间的关联关系。

SQL 数据库设计:实现个人信息、教育、工作经验、技能和语言表格

原文地址: https://www.cveoy.top/t/topic/fYr1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录