DROP TABLE IF EXISTS TB_MATHEUS_MEDEIROS_AVALIACOES;
DROP TABLE IF EXISTS TB_MATHEUS_MEDEIROS_JOGOS;
DROP SEQUENCE IF EXISTS TB_MATHEUS_MEDEIROS_AVALIACOES_SEQ;
DROP SEQUENCE IF EXISTS TB_MATHEUS_MEDEIROS_JOGOS_SEQ;
CREATE SEQUENCE TB_MATHEUS_MEDEIROS_JOGOS_SEQ
START WITH 1
INCREMENT BY 1
CACHE 1
NO CYCLE;
CREATE TABLE TB_MATHEUS_MEDEIROS_JOGOS (
CODIGO
NUMERIC(10)
DEFAULT NEXTVAL('TB_MATHEUS_MEDEIROS_JOGOS_SEQ')
NOT NULL,
TITULO
VARCHAR(100)
NOT NULL,
GENERO
VARCHAR(30)
NOT NULL,
ANO_LANCAMENTO
NUMERIC(4)
NOT NULL,
PRODUTORA
VARCHAR(50)
NOT NULL,
NOTA_MEDIA
NUMERIC(3,1),
DESCRICAO
VARCHAR(500),
CONSTRAINT PK_MM_JOGOS
PRIMARY KEY (CODIGO),
CONSTRAINT CK_MM_JOGOS_TITULO
CHECK (LENGTH(TITULO) BETWEEN 3 AND 100),
CONSTRAINT CK_MM_JOGOS_ANO
CHECK (
ANO_LANCAMENTO BETWEEN 1970
AND EXTRACT(YEAR FROM CURRENT_DATE)
),
CONSTRAINT CK_MM_JOGOS_NOTA_MEDIA
CHECK (
NOTA_MEDIA IS NULL
OR NOTA_MEDIA BETWEEN 0 AND 10
)
);
CREATE SEQUENCE TB_MATHEUS_MEDEIROS_AVALIACOES_SEQ
START WITH 1
INCREMENT BY 1
CACHE 1
NO CYCLE;
CREATE TABLE TB_MATHEUS_MEDEIROS_AVALIACOES (
CODIGO
NUMERIC(10)
DEFAULT NEXTVAL('TB_MATHEUS_MEDEIROS_AVALIACOES_SEQ')
NOT NULL,
NOME
VARCHAR(100)
NOT NULL,
EMAIL
VARCHAR(150)
NOT NULL,
COMENTARIO
VARCHAR(300),
NOTA
NUMERIC(3,1),
DATA_AVALIACAO
TIMESTAMP
DEFAULT CURRENT_TIMESTAMP
NOT NULL,
ID_JOGO
NUMERIC(10)
NOT NULL,
CONSTRAINT PK_MM_AVALIACOES
PRIMARY KEY (CODIGO),
CONSTRAINT UK_MM_AVAL_EMAIL_JOGO
UNIQUE (EMAIL, ID_JOGO),
CONSTRAINT FK_MM_AVAL_JOGO
FOREIGN KEY (ID_JOGO)
REFERENCES TB_MATHEUS_MEDEIROS_JOGOS (CODIGO),
CONSTRAINT CK_MM_AVAL_NOTA
CHECK (
NOTA IS NULL
OR NOTA BETWEEN 0 AND 10
)
);