Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda com código - criação de constraints


Shinhatsubai

Pergunta

Boa tarde,

Não consigo identificar onde estou errando no código abaixo, por favor, alguém pode dar uma força? ;)

Na criação das tabelas está tudo ok, porém estou encontrando problemas na hora de definir as constraints.

Obrigado!

CREATE DATABASE dbPIZZARIA
GO

USE dbPIZZARIA

CREATE TABLE BAIRROS (
  NOME_BAIRRO VARCHAR(30) NOT NULL,
  TEMPO_ESPERA NUMERIC(03) NOT NULL,
);

CREATE TABLE CARDAPIO (
  NUM_CARDAPIO INTEGER NOT NULL,
  TIPO_CARDAPIO CHAR(01) default 'P' NOT NULL,
  DESCRICAO VARCHAR(40) NOT NULL,
  TAMANHO_PIZZA CHAR(01) default 'M' NULL,
  INGREDIENTES VARCHAR(750) NULL,
  PRECO_TABELA NUMERIC(4,2) NOT NULL,
);

CREATE TABLE CLIENTES (
  CODIGO_CLIENTE INTEGER NOT NULL,
  NOME_CLIENTE VARCHAR(80) NOT NULL,
  ENDERECO_CLIENTE VARCHAR(100) NOT NULL,
  BAIRROS_NOME_BAIRRO VARCHAR(30) NOT NULL,
  TELEFONE_CLIENTE VARCHAR(11) NOT NULL,
);

CREATE TABLE ENTREGADOR (
  CODIGO_ENT INTEGER NOT NULL,
  TEL_CELULAR VARCHAR(11) NOT NULL,
);

CREATE TABLE FUNCIONARIOS (
  CODIGO_FUNC INTEGER NOT NULL,
  NOME_FUNC VARCHAR(80) NOT NULL,
  TIPO_FUNC CHAR(01) default 'A' NOT NULL,
  END_FUNC VARCHAR(100) NOT NULL,
  TELEFONE VARCHAR(11) NOT NULL,
);

CREATE TABLE ITEM_PEDIDO (
  PEDIDOS_NUM_PEDIDO INTEGER NOT NULL,
  CARDAPIO_NUM_CARDAPIO INTEGER NOT NULL,
  QUANTIDADE NUMERIC(3) NOT NULL,
  preço NUMERIC(4,2) NOT NULL,
);

CREATE TABLE PEDIDOS (
  NUM_PEDIDO INTEGER NOT NULL,
  DATA_EMISSAO DATETIME NOT NULL,
  VALOR_TOT_PED NUMERIC(4,2) NOT NULL,
  FUNCIONARIOS_CODIGO_FUNC INTEGER NOT NULL,
  CLIENTES_CODIGO_CLIENTE INTEGER NOT NULL,
  ENTREGADOR_CODIGO_ENT INTEGER NOT NULL,
  TIPO_PAGTO CHAR(01) default 'D' NOT NULL,
);
--------------------------------------------------------------------------------------------------------------------------------------------
USE dbPIZZARIA

ALTER TABLE BAIRROS
ADD CONSTRAINT PK_BAIRRO PRIMARY KEY (NOME_BAIRRO);

ALTER TABLE ENTREGADOR
ADD CONSTRAINT PK_ENTREGADOR PRIMARY KEY (CODIGO_ENT);

ALTER TABLE CLIENTES
ADD CONSTRAINT PK_CLIENTES PRIMARY KEY (CODIGO_CLIENTE)
ADD CONSTRAINT FK_CLIENTES FOREIGN KEY (BAIRROS_NOME_BAIRRO) REFERENCES BAIRROS;

ALTER TABLE CARDAPIO
ADD CONSTRAINT PK_CARDAPIO PRIMARY KEY (NUM_CARDAPIO)
ADD CONSTRAINT CH1_CARDAPIO CHECK(TIPO_CARDAPIO IN('B','E','P'))
ADD CONSTRAINT CH2_CARDAPIO CHECK(TAMANHO_PIZZA IN('G','M','P'));

ALTER TABLE FUNCIONARIOS
ADD CONSTRAINT PK_FUNCIONARIOS PRIMARY KEY (CODIGO_FUNC)
ADD CONSTRAINT CH_FUNCIONARIOS CHECK(TIPO_FUNC IN('A','G','P'));

ALTER TABLE PEDIDOS
ADD CONSTRAINT PK_PEDIDOS PRIMARY KEY (NUM_PEDIDO)
ADD CONSTRAINT FK1_PEDIDOS FOREIGN KEY (FUNCIONARIOS_CODIGO_FUNC) REFERENCES FUNCIONARIOS
ADD CONSTRAINT FK2_PEDIDOS FOREIGN KEY (CLIENTES_CODIGO_CLIENTE) REFERENCES CLIENTES
ADD CONSTRAINT FK3_PEDIDOS FOREIGN KEY (ENTREGADOR_CODIGO_ENT) REFERENCES ENTREGADOR
ADD CONSTRAINT CH_PEDIDOS CHECK(TIPO_PAGTO IN('C','D','T'));

ALTER TABLE ITEM_PEDIDO
ADD CONSTRAINT PK1_ITEM_PEDIDO PRIMARY KEY (PEDIDOS_NUM_PEDIDO)
ADD CONSTRAINT PK2_ITEM_PEDIDO PRIMARY KEY (CARDAPIO_NUM_CARDAPIO)
ADD CONSTRAINT FK1_ITEM_PEDIDO FOREIGN KEY (PEDIDOS_NUM_PEDIDO) REFERENCES PEDIDOS
ADD CONSTRAINT FK2_ITEM_PEDIDO FOREIGN KEY (CARDAPIO_NUM_CARDAPIO) REFERENCES CARDAPIO;

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom dia Shinhatsubai,

você terá q criar as PK´s primeiro. Depois da criação das PK´s, você roda o script para criar as FK´s. A sintaxe quando é criada mais de uma constraint está incorreta.

Ex:

ALTER TABLE CLIENTES
ADD CONSTRAINT PK_CLIENTES PRIMARY KEY (CODIGO_CLIENTE)
ADD CONSTRAINT FK_CLIENTES FOREIGN KEY (BAIRROS_NOME_BAIRRO) REFERENCES BAIRROS;
Seria:
ALTER TABLE CLIENTES
ADD CONSTRAINT PK_CLIENTES PRIMARY KEY (CODIGO_CLIENTE)
ALTER TABLE CLIENTES
ADD CONSTRAINT FK_CLIENTES FOREIGN KEY (BAIRROS_NOME_BAIRRO) REFERENCES BAIRROS;

Na tabela ITEM_PEDIDO você está tentando criar 2 PK´s.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...