复合主键具有Allow Null为true的列

时间:2016-10-11 07:32:52

标签: composite-key

我想知道最佳做法。 我有一个表委员会, 申请 EmpInternal EmpExternal 委员会的主要密钥是一个复合密钥,包括 ApplicationID EmpInternalID EmpExternalID

现在,由于在复合键的列中不允许 AllowNull 属性为true。如何在委员会表格中存储委员会成员,有时是内部和外部。所有列 ApplicationID EmpInternalID EmpExternalID 在各自的表格中都是自动编号

CREATE TABLE [dbo].[Employee](
[EmployeeID] [varchar](10) NOT NULL,    
[UserID] [varchar](100) NULL,
[Title] [varchar](50) NULL,
[Name] [nvarchar](240) NULL,
[Rank] [varchar](150) NULL,
[Department] [varchar](240) NULL,
[College] [varchar](240) NULL,
[POBox] [varchar](120) NULL,
[Phone] [varchar](60) NULL,
[JoinDate] [varchar](200) NULL,
CONSTRAINT [PK_Employee1] PRIMARY KEY CLUSTERED 
(
[EmployeeID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) 

CREATE TABLE [dbo].[EmployeeExternal](
[EmployeeExID] [varchar](10) NOT NULL,  
[Title] [nvarchar](50) NULL,
[Name] [nvarchar](50) NULL,
[Rank] [nvarchar](50) NULL,
[Department] [nvarchar](4000) NULL,
[Organization] [nvarchar](4000) NULL,
[Address] [nvarchar](4000) NULL,
[Email] [nvarchar](50) NULL,
[Email2] [nvarchar](50) NULL,
[Phone] [nvarchar](50) NULL,
[Mobile] [nvarchar](50) NULL,
[Country] [nvarchar](50) NULL,
CONSTRAINT [PK_Employee1] PRIMARY KEY CLUSTERED 
  ( [EmployeeExID] ASC   )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE =  OFF, IGNORE_DUP_KEY = OFF,     ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) 

1 个答案:

答案 0 :(得分:0)

员工表和 EmployeeExternal 表中的标记记录比合并这两个表更好。复合键中标记记录的键删除复合键中使用null