Ahh massa que entendeu o por quê da chave primária. Agora a sua segunda dúvida eu não sei se entendi. Se observar o código aqui:
CREATE TABLE [dbo].[Dim_Tempo]
(
[Cod_Dia] NVARCHAR(50) NOT NULL PRIMARY KEY,
[Data] DATE NULL,
[Cod_Semana] INT NULL,
[Nome_Dia_Semana] NVARCHAR(50) NULL,
[Cod_Mes] INT NULL,
[Nome_Mes] NVARCHAR(50) NULL,
[Cod_Mes_Ano] NVARCHAR(50) NULL,
[Nome_Mes_Ano] NVARCHAR(50) NULL,
[Cod_Trimestre] INT NULL,
[Nome_Trimestre] NVARCHAR(50) NULL,
[Cod_Trimestre_Ano] NVARCHAR(50) NULL,
[Nome_Trimestre_Ano] NVARCHAR(50) NULL,
[Cod_Semestre] INT NULL,
[Nome_Semestre] NVARCHAR(50) NULL,
[Cod_Semestre_Ano] NVARCHAR(50) NULL,
[Nome_Semestre_Ano] NVARCHAR(50) NULL,
[Ano] NVARCHAR(50) NULL,
[Tipo_Dia] NVARCHAR(50) NULL
)
É possível observar que o campo permite campos nulos, mas não significa que terão. Nas aulas seguintes você irá observar que estes campos serão "carregados" com informações de períodos para análise.