Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server中的连接表_Sql_Database_Sql Server 2008 R2_Junction Table - Fatal编程技术网

SQL Server中的连接表

SQL Server中的连接表,sql,database,sql-server-2008-r2,junction-table,Sql,Database,Sql Server 2008 R2,Junction Table,在新数据库中创建连接表时遇到困难。我使用这些查询创建表: CREATE TABLE dbo.EmployeeUnavailability ( ID INT IDENTITY(1,1) PRIMARY KEY, EmployeeName varchar(50), Monday varchar(10), Tuesday varchar(10), Wednesday varchar(10), Thursday varchar(10), Friday varchar(10), Satu

在新数据库中创建连接表时遇到困难。我使用这些查询创建表:

CREATE TABLE dbo.EmployeeUnavailability 
(
 ID INT IDENTITY(1,1) PRIMARY KEY,
 EmployeeName varchar(50),
 Monday varchar(10),
 Tuesday varchar(10),
 Wednesday varchar(10),
 Thursday varchar(10),
 Friday varchar(10),
 Saturday varchar(10),
 Sunday varchar(10),
 SupervisorName varchar(50),
)
GO 

CREATE TABLE dbo.EmployeeAttendance
(
 ID INT IDENTITY(1,1) PRIMARY KEY,
 EmployeeName varchar(50),
 Monday varchar(20),
 Tuesday varchar(20),
 Wednesday varchar(20),
 Thursday varchar(20),
 Friday varchar(20),
 Saturday varchar(20),
 Sunday varchar(20),
 SupervisorName varchar(50),
)
GO 

CREATE TABLE dbo.EmployeePerformance 
(
 ID INT IDENTITY(1,1) PRIMARY KEY,
 EmployeeName varchar(50),
 Attitude varchar(250),
 AttitudeDD tinyint,
 WorkQuality varchar(250),
 WorkQualityDD tinyint,
 Communication varchar(250),
 CommunicationDD tinyint,
 Leadership varchar(250),
 LeadershipDD tinyint,
 ImprovementAchievement varchar(250),
 ImprovementAchievementDD tinyint,
 SupervisorName varchar(50),
)
GO 

从这里开始,我很难创建一个引用所有三个表的连接表。三个表中的员工姓名和主管姓名相同。

在我看来,让一个表引用所有三个表不是一个好主意。这将允许该连接表中的一行引用其他表中没有共同点的行。也就是说,连接表中的一行可以引用第一表中John、第二表中Mary和第三表中Garry的一行

仅使用Employee实体的属性创建Employee表。添加具有ID的EmployeeUnavailability,指向Employee中的一行,并用datetime类型的列标识日期


员工出勤率与员工绩效无关。一名员工可以很少露面,但可以成为绩效忍者。

员工是您所在领域的实体。因此,您肯定应该有一个Employee表。在这种情况下,员工的姓名将出现在employee表中,您不必重复多次。看看dbo.EmployeeUnavailability。那张桌子上的一行说明了什么?星期一专栏是什么意思?好的,我们谈论的是哪一周?重命名您的列以使其更清晰。抱歉,您需要返回到基础。您没有一周中每一天的列。如果我们在该年中添加年份信息和周数,则可以有此类列。这样,我们就能够准确地确定捕获信息的日期。但我不建议这种设计。这是不必要的复杂。