【发布时间】:2013-04-01 20:37:06
【问题描述】:
我在新数据库中创建联结表时遇到困难。我使用这些查询来创建表:
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
从那里,我很难创建一个将引用所有三个表的联结表。三个表中的员工姓名和主管姓名将相同。
【问题讨论】:
-
员工是您域中的实体。因此,您肯定应该有一个 Employee 表。在这种情况下,员工的姓名将在 Employee 表中,您不必多次重复。看看 dbo.EmployeeUnavailability。该表中的一行说明了什么?星期一的专栏是什么意思?好的,我们说的是哪一周?重命名您的列以更清晰。
-
抱歉,您需要回归基础。您没有一周中的每一天的列。
-
如果我们添加年份信息和那一年的周数,可以有这样的列。这样我们就能够准确地识别我们正在捕获信息的日期。但我不建议这种设计。这太复杂了。
标签: sql database sql-server-2008-r2 junction-table