One-to-many to multiple tables What's the normal way to design a relationship where every entry in table A is connected(1:n) to either an entry in table B or table C?

Or specifically: There are a tables for characters, movies, episodes and TV show season. One character is connected to either 1) a movie or 2) a show(in addition to n:n to season(season regular) and episode) 

x can be the id for both a movie and a show.

Two identical tables(tv_characters and movie_characters)?

Is it better with two primary keys(one will always be either "movie" or "tv")?
Use a cross reference table to link characters to media, as in:

CREATE TABLE dbo.Characters
(
    CharacterID INT NOT NULL
        CONSTRAINT PK_Characters
        PRIMARY KEY CLUSTERED
        IDENTITY(1,1)
    , CharacterName VARCHAR(100) NOT NULL
);

CREATE TABLE dbo.MediaTypes
(
    MediaTypeID INT NOT NULL
        CONSTRAINT PK_MediaTypes
        PRIMARY KEY CLUSTERED
        IDENTITY(1,1)
    , MediaTypeName VARCHAR(100) NOT NULL
);

CREATE TABLE dbo.Media
(
    MediaID INT NOT NULL
        CONSTRAINT PK_Media
        PRIMARY KEY CLUSTERED
        IDENTITY(1,1)
    , MediaName VARCHAR(100) NOT NULL
    , MediaTypeID INT NOT NULL
        CONSTRAINT FK_Media_MediaTypeID
        FOREIGN KEY 
        REFERENCES dbo.MediaTypes(MediaTypeID)
);

CREATE TABLE dbo.CharactersMedia
(
    MediaID INT NOT NULL
    , CharacterID INT NOT NULL
    , CONSTRAINT PK_CharactersMedia
        PRIMARY KEY CLUSTERED
        (MediaID, CharacterID)
);

INSERT INTO dbo.MediaTypes (MediaTypeName)
VALUES ('TV Show')
    , ('Movie');

INSERT INTO dbo.Characters (CharacterName)
VALUES ('Don Juan')
    , ('Don Johnson');

INSERT INTO dbo.Media (MediaName, MediaTypeID)
VALUES ('Miami Vice', 1)
    , ('Don Juan', 2);

INSERT INTO dbo.CharactersMedia (MediaID, CharacterID)
VALUES (1, 2)
    , (2, 1);

SELECT m.MediaName
    , c.CharacterName
    , mt.MediaTypeName
FROM dbo.Media m
    INNER JOIN dbo.CharactersMedia cm ON m.MediaID = cm.MediaID
    INNER JOIN dbo.Characters c ON cm.CharacterID = c.CharacterID
    INNER JOIN dbo.MediaTypes mt ON m.MediaTypeID = mt.MediaTypeID;