Jump to content
Fórum Script Brasil
  • 0

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


Shinhatsubai

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...