在 table 中寻找冗余

Finding redundancy in table

我有以下数据库:

现在我想确定此文件结构表现出的主要数据冗余问题。还有一些可以做的改变 对于 Employee_Name 和 Employee_Phone?我是数据库的新手,所以请帮忙

我建议使用三个 table:项目、人员、工作。

项目将包含代码和名称

人们会持有姓名 phone

工作将包含每个工作事件的条目,包括工作时间间隔、工作人员的主键以及该人员从事的项目的主键。

然后,要输出一个 table 就像你最初的那个,你会 select 从所有三个。如果您需要此类查询的示例,请发表评论,我将编写它。

我建议您为您的项目保留一个 table,为您的员工保留一个单独的 table。我不知道你想要完成什么,所以也许 Employees 真的是一个 People table,带有一个标志来表示一个员工。然后我还会保留一个单独的 table(我称之为 Activity),它链接到项目和员工并包含 HoursWorked 和一些注释。然后为了得到你在这里得到的东西,我将创建一个视图,将 table 连接在一起,并按项目和员工分组,并总结工作时间。

类似的东西:

Create table Project
(
  ID int not null,
  ProjectCode nvarchar(32),
  ProjectName nvarchar(128)
);

Create table Employee
(
  ID int not null,
  EmployeeName nvarchar(128),
  PhoneNumber nvarchar(32)
);

Create table Activity
(
  ID int not null,
  EmployeeID int not null,
  ProjectID int not null,
  Hours decimal,
  Notes nvarchar(MAX)
);

Create View HoursWorked AS 
SELECT
  P.ProjectCode,
  P.ProjectName,
  E.EmployeeName,
  SUM(A.Hours) AS HoursWorked,
  E.PhoneNumber
 FROM
   Activity A
   INNER JOIN Project P ON P.ID = A.ProjectID
   INNER JOIN Employee E ON E.ID = A.EmployeeID
 GROUP BY
  P.ProjectCode,
  P.ProjectName,
  E.EmployeeName,
  E.PhoneNumber
 ;

您必须创建外键关系等等。我也没有对此进行测试,所以也许我搞砸了一些语法,但想法就在那里。