Какие столбцы должна содержать эта таблица аудита? Исходная таблица является таблицей отношений - PullRequest
0 голосов
/ 21 июня 2019

У меня есть БД с 3 таблицами, для которой мне нужно создать таблицы аудита. Он содержит TTeams, TPlayers и TTeamPlayers. У меня возникла проблема при создании таблицы аудита для TTeamPlayers. Ниже приведен код для каждого. У меня особенно возникают проблемы с заявлениями ALTER. Какими должны быть внешние ключи? Должны ли они быть intTeamID и intPlayerID, или они должны быть intTeamAuditID и intPlayerAuditID? Я также понятия не имею, какими должны быть столбцы в таблице аудита для TTeamPlayers. Спасибо за любую помощь!

CREATE TABLE TTeams ( intTeamID INTEGER IDENTITY NOT NULL ,strTeam  VARCHAR(50) NOT NULL ,strMascot VARCHAR(50) NOT NULL ,strModified_Reason    VARCHAR(1000) ,CONSTRAINT TTeams_PK PRIMARY KEY ( intTeamID ) )

CREATE TABLE TPlayers
(
     intPlayerID            INTEGER   IDENTITY  NOT NULL
    ,strFirstName           VARCHAR(50)     NOT NULL
    ,strLastName            VARCHAR(50)     NOT NULL
    ,strModified_Reason     VARCHAR(1000)
    ,CONSTRAINT TPlayers_PK PRIMARY KEY ( intPlayerID )
)

CREATE TABLE TTeamPlayers
(
     intTeamPlayerID        INTEGER IDENTITY    NOT NULL
    ,intTeamID          INTEGER         NOT NULL
    ,intPlayerID            INTEGER         NOT NULL
    ,strModified_Reason     VARCHAR(1000)
    ,CONSTRAINT PlayerTeam_UQ UNIQUE ( intTeamID, intPlayerID )
    ,CONSTRAINT TTeamPlayers_PK PRIMARY KEY ( intTeamPlayerID )
)

CREATE TABLE Z_TTeams
(
     intTeamAuditID         INTEGER IDENTITY    NOT NULL
    ,intTeamID          INTEGER         NOT NULL
    ,strTeam            VARCHAR(50)     NOT NULL
    ,strMascot          VARCHAR(50)     NOT NULL
    ,UpdatedBy          VARCHAR(50)     NOT NULL
    ,UpdatedOn          DATETIME        NOT NULL
    ,strAction          VARCHAR(10)     NOT NULL
    ,strModified_Reason     VARCHAR(1000)   
    ,CONSTRAINT Z_TTeams_PK PRIMARY KEY ( intTeamAuditID )
)

CREATE TABLE Z_TPlayers
(
     intPlayerAuditID       INTEGER   IDENTITY  NOT NULL
    ,intPlayerID            INTEGER         NOT NULL
    ,strFirstName           VARCHAR(50)     NOT NULL
    ,strLastName            VARCHAR(50)     NOT NULL
    ,UpdatedBy          VARCHAR(50)     NOT NULL
    ,UpdatedOn          DATETIME        NOT NULL
    ,strAction          VARCHAR(10)     NOT NULL
    ,strModified_Reason     VARCHAR(1000)
    ,CONSTRAINT Z_TPlayers_PK PRIMARY KEY ( intPlayerAuditID )
)

CREATE TABLE Z_TTeamPlayers
(
     intTeamPlayerAuditID           INTEGER IDENTITY        NOT NULL
    ,intTeamID          INTEGER             NOT NULL
    ,intPlayerID            INTEGER             NOT NULL
    ,UpdatedBy          VARCHAR(50)         NOT NULL
    ,UpdatedOn          DATETIME            NOT NULL
    ,strAction          VARCHAR(10)             NOT NULL
    ,strModified_Reason     VARCHAR(1000)
    --,CONSTRAINT PlayerTeam_UQ UNIQUE ( intTeamID, intPlayerID )
    ,CONSTRAINT Z_TTeamPlayers_PK PRIMARY KEY ( intTeamPlayerAuditID )
)
-- ================================================================================
-- Step #1.2: Identify and Create Foreign Keys
-- ================================================================================
--
-- #    Child               Parent              Column(s)
-- -    -----               ------              ---------
-- 1     
TTeamPlayers                TTeams              intTeamID
-- 2 
TTeamPlayers                TPlayers            intPlayerID
-- 3 
Z_TTeamPlayers              TTeams              intTeamAuditID
-- 4     
Z_TTeamPlayers              TPlayers            intPlayerAuditID

-- 1
ALTER TABLE TTeamPlayers ADD CONSTRAINT TTeamPlayers_TTeams_FK
FOREIGN KEY ( intTeamID ) REFERENCES TTeams ( intTeamID )

-- 2
ALTER TABLE TTeamPlayers ADD CONSTRAINT TTeamPlayers_TPlayers_FK
FOREIGN KEY ( intPlayerID ) REFERENCES TPlayers ( intPlayerID )

-- 3
ALTER TABLE Z_TTeamPlayers ADD CONSTRAINT Z_TTeamPlayers_TTeams_FK
FOREIGN KEY ( intTeamAuditID ) REFERENCES Z_TTeams ( intTeamAuditID )

-- 4
ALTER TABLE Z_TTeamPlayers ADD CONSTRAINT Z_TTeamPlayers_TPlayers_FK
FOREIGN KEY ( intPlayerAuditID ) REFERENCES Z_TPlayers ( intPlayerAuditID )
...