Executando verificação de segurança...
2

Problema com SQlite

eu tenho 3 tabelas
que são essas aq

CREATE TABLE "Roupas"(
	"ID_roupa"	INTEGER NOT NULL PRIMARY KEY,
	"Tipo_roupa"	TEXT NOT NULL,
	"Tamanho_roupa"	TEXT NOT NULL,
	"Cor_roupa"	TEXT NOT NULL,
	"preco_roupa"	NUMERIC NOT NULL
);

Create table "Vendedoras" (
  "ID_vendedora" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
  "Nome_vendedora" Text VARCHAR(30) not null ,
  "Idade_vendedora" Numeric not null 
);
 
Create table "Vendas" (
   "ID_venda" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
   "ID_roupa_venda" INTEGER, 
   "ID_vendedora_venda" INTEGER,
  FOREIGN KEY(ID_roupa_venda) REFERENCES Roupas(id_roupa),
  FOREIGN key(ID_vendedora_venda) REFERENCES Vendedoras(ID_vendedora)
);

Tem algum jeito de importa o "preco_roupa" pra Vendas? q importe automaticamente assim q colocar o id de cada roupa ???

Carregando publicação patrocinada...
2

Se eu entendi a necessidade, aqui voce faria um uma juncao das tabelas, ja que tem relacionamento.

select venda.id_venda,roupa.preco_roupa from vendas as venda left outer join roupas as roupa on roupa.id_roupa = venda.id_roupa
1
2

Basicamente as tabelas que voce criou se relacionam entre elas, sendo assim voce consegue fazer a consulta dos dados juntando as informacoes desejadas, exemplo:
"saber o preco da roupa vendido" teria que ir na tabela de vendas e perguntar qual foi o item vendido (select id_roupa from vendas) e ai na tabela de roupas perguntar qual o preco (select preco_roupa from roupas), isso pode ser tanto duas consultas (select) quanto fazendo a uniao (join).

2

tem um ponto ai...o preço da roupa deve ser "congelado" no momento da criaçao da venda, usando os relacionamentos sempre volta o preço atual.

acho que por isso o Heytor pergunta se tem como importar o preco_roupa quando cria a venda.

seguindo essa racional diria que nao, que é necessario um novo campo na tabela de Vendas para armazenar
o preco.

quando uma venda for efetuada, no proprio insert na tabela Vendas, como
vc ja tem o id do produto, passe um select que retorna o preco do produto como valor do seu novo campo, algo como SELECT preco_roupa FROM Roupas WHERE ID_Roupa = :ID

1

Concordo que a estrutura poderia ser melhor elaborada por exemplo:
"roupa tem uma nova tabela historico_roupa pois quando existir mudanca no preco do mesmo, vendas anteriores seram imutaveis"
ou ate mesmo:
"uma tabela venda_roupa onde estara as roupas e precos que foram vendidos naquela transacao e sendo assim ter mais de uma roupa por venda se necessario"

Se tratando da estrutura sempre terão pontos diferentes a se pensar e melhorar como uso do MongoDB como banco de dados dependendo da necessidade final ou generalização das tabelas como roupas será item e tera um tipo roupa,tenis,etc...

3

sim sim, concordo totalmente. porem acredito que para a finalidade do exercicio (e aqui estou só chutando) me parece muito uma aula de banco de dados para explicar JOIN e começar a provocar esses questionamentos no processo

1

Sim, é possível importar o preço da roupa para a tabela Vendas utilizando uma chave estrangeira. Você pode fazer isso adicionando uma coluna "preco_roupa_venda" à tabela Vendas e criando uma chave estrangeira que se relaciona com a coluna "preco_roupa" da tabela Roupas.

Para fazer isso, basta adicionar a seguinte linha de código à sua tabela Vendas:

FOREIGN KEY(preco_roupa_venda) REFERENCES Roupas(preco_roupa)

Isso criará uma chave estrangeira que se relaciona com a coluna "preco_roupa" da tabela Roupas, permitindo que você importe o preço da roupa para a tabela Vendas sempre que for necessário.

Você também pode adicionar uma regra ON UPDATE ou ON DELETE para garantir que o valor da chave estrangeira seja atualizado ou excluído corretamente caso haja alterações na tabela Roupas.

Segue o codigo com a solução implementada:

CREATE TABLE "Roupas"(
"ID_roupa" INTEGER NOT NULL PRIMARY KEY,
"Tipo_roupa" TEXT NOT NULL,
"Tamanho_roupa" TEXT NOT NULL,
"Cor_roupa" TEXT NOT NULL,
"preco_roupa" NUMERIC NOT NULL
);

Create table "Vendedoras" (
"ID_vendedora" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"Nome_vendedora" Text VARCHAR(30) not null ,
"Idade_vendedora" Numeric not null
);

Create table "Vendas" (
"ID_venda" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"ID_roupa_venda" INTEGER,
"ID_vendedora_venda" INTEGER,
"preco_roupa_venda" NUMERIC,
FOREIGN KEY(ID_roupa_venda) REFERENCES Roupas(id_roupa),
FOREIGN key(ID_vendedora_venda) REFERENCES Vendedoras(ID_vendedora),
FOREIGN KEY(preco_roupa_venda) REFERENCES Roupas(preco_roupa) ON UPDATE CASCADE
);