sql - 下表应该如何归一化?

标签 sql database

我有一个名为 Employee 的表,其中包含 IDFnameLnamedateEmployedProgramfieldOfStudySalaryjobTitleJobDescription 列。我需要对其进行标准化,但我不确定该怎么做。那么我应该如何规范化它呢?

这是我尝试过的

我创建了两个表 EmployeeJob 如下所示,并在 中引用了 Job 表中的 jobId 列员工表。

这是员工表

CREATE TABLE EMPLOYEE(
    Id int primary key identity,
    FName nvarchar(50),
    LName nvarchar(50),
    dateEmployed Date,
    jobID int foreign key references job(jbId)
);

这是作业表

CREATE TABLE Job(
    jobId int primary key identity,
    Title nvarchar(200),
    program nvarchar(30),
    salary float,
    fieldOfStudy nvarchar(50)
    JobDescription nvarchar(max)
);

我的问题只是关于规范化,而不是关于sql 查询

最佳答案

您的问题实际上分解为:工作与员工之间的关系是什么(您没有彻底解释)。可能的情况是:

  • 1-N :如果每个员工都有一份工作并且多个员工可以有相同的工作,那么您的设置有两个表和一个外键在 employee to job 就可以了

  • 1-1 :如果每个员工都有一份工作,并且每个工作都属于一个员工,那么您不需要两个表:您可以将所有内容都塞入员工表

  • N-N :如果一个员工可以有多个工作,每个工作可以属于多个员工,那么您需要创建第三个表,一个桥接表来表示这种关系,其中每一行将存储一个外键指向 jobs 表,另一个外键指向 employees 表

关于sql - 下表应该如何归一化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54277799/

相关文章:

sql - 确定连续的日期间隔

sql - 触发 2 个表

php - 在现有网站上使用 Laravel

SQL 选择可能包含特定值的所有记录

database - 内存数据库的概念以及如何查看我的数据是否被填充到 HSQL DB 中?

php - Cakephp 在登录基础上选择数据库

java - 你如何在 hibernate 中启用批量插入?

mysql - 子查询连接失败

Android 多列 SQLite 数据库

database - 用于 OLAP 数据库设计的雪花型或星型