Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Espector

Vinculo na tebela

Recommended Posts

Ola, estou fazendo um sistema de ordens de serviço..

essa tebela eh do cliente....

CREATE TABLE cliente 
(
  idcliente INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome VARCHAR(20) NOT NULL,
  telefone VARCHAR(8) NOT NULL,
  celular VARCHAR(8) NOT NULL,
  endereco VARCHAR(200) NOT NULL,
  cidade VARCHAR(150) NULL,
  bairro VARCHAR(150) NOT NULL,
  PRIMARY KEY(idcliente)
)

e gostaria de vincular esta tabela com a de cima..

CREATE TABLE ordem
(
  idordem INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome_cliente VARCHAR(150) NOT NULL, // da tabela cliente
  tel_cliente VARCHAR(8) NOT NULL,    // da tabela cliente
  cel_cliente VARCHAR(10) NOT NULL,   // da tabela cliente
  descricao VARCHAR(500) NOT NULL,   
  andamento VARCHAR(10) NOT NULL,    
  PRIMARY KEY(idusuario)
)

e gostaria de saber como eu faço para a ordem ter 2 estágios:

-Andamento

-Concluido

 

desde ja agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá ESPECTOR,

 

As questões que colocas davam para muita explicação, em vez disso vou colocar-te o que eu faria, mesmo sem conhecer o teu problema em detalhe.

 

Em relação à tabela cliente, apenas uma sugestão quanto ao campo nome; VARCHAR(20) parece-me muito pouco (se não for um nickname), caso contrário VARCHAR(80) não me parece demais. Além disso, celular e telefone VARCHAR(8) também me parece pouco, aqui em Portugal, são 9 algarismos, aí não sei... vê isso. A minha sugestão vai para...

 

CREATE TABLE cliente (
  idcliente INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  nome VARCHAR(80) NOT NULL,
  telefone VARCHAR(??) NOT NULL,
  celular VARCHAR(??) NOT NULL,
  endereco VARCHAR(200) NOT NULL,
  cidade VARCHAR(150) NULL,
  bairro VARCHAR(150) NOT NULL,
  PRIMARY KEY(idcliente))

Em relação à tabela "ordem" é que me parece que as coisas não estão muito bem. Não consigo encontrar uma razão de ser para esta tabela (pelo menos com os campos que estão descriminados). Mas fica uma sugestão que me parece muito mais racional...

 

CREATE TABLE ordem(
  idordem INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  idcliente INTEGER UNSIGNED NOT NULL, // da tabela cliente

  descricao VARCHAR(500) NOT NULL,
  andamento VARCHAR(1) NOT NULL,
  PRIMARY KEY(idordem))

Acho que o melhor seria descreveres detalhadamente as finalidades destas duas tabelas porque a solução está nas tuas necessidades e não na solução que apresentas, mas basicamente as tabelas terão que ser baseadas nisto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como vou te explicar...

assim:

a tabela ordem.. tem..

ID como chave primaria.

só que essa ordem com esse ID, pertence a um IDCLIENTE, para saber qual ordem eh de qual cliente..

 

entendeu? x)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então a solução é a que te indiquei, a velha relação Master/Detail, sempre que pretendas ter mais que uma ordem para cada cliente (relação 1 para muitos).

Se, pelo contrário, a tabela ordem nunca tiver mais que uma ordem de cada cliente então podes considerar o IDcliente como chave primária mas não AUTO_INCREMENT e ignorar a chave idordem (relação 1 para 1).

Estas são as duas situações possíveis, tudo o que vá além disto é tentar reinventar a roda. Tudo o resto que pedes é feito ao nível do código e não ao nível do banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

com relação aos estágios

 

crie um campo por exemplo STATUS

com o tipo ENUM('A','C')

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.