BANCO DE DADOS RELACIONAL
Pessoal bom dia!
Tenho uma duvida quanto a banco de dados relacional
Tem duas tabelas relacionadas por exemplo
Tb_Funcionario
CodigoFIncionario int(11) not null default 0 chave
NomeFuncionario varchar(60) null,
CodFuncao int(11) default 0, chave estrangeira
Tb_Funcao
CodigoFuncao int(11) not null default 0 chave
Descricao varchar(30) null,
Gostaria de quando cadastrar um funcionario e ainda nao tiver uma funcao definida,
deixar o 0 como default.
Hoje esta dando erro na constraint realmente nao existe codigo 0 cadastrado na tabela funcao.
Qual modo certo para manter um banco relacional, deixando o campo codfuncao permitindo null?
Tenho uma duvida quanto a banco de dados relacional
Tem duas tabelas relacionadas por exemplo
Tb_Funcionario
CodigoFIncionario int(11) not null default 0 chave
NomeFuncionario varchar(60) null,
CodFuncao int(11) default 0, chave estrangeira
Tb_Funcao
CodigoFuncao int(11) not null default 0 chave
Descricao varchar(30) null,
Gostaria de quando cadastrar um funcionario e ainda nao tiver uma funcao definida,
deixar o 0 como default.
Hoje esta dando erro na constraint realmente nao existe codigo 0 cadastrado na tabela funcao.
Qual modo certo para manter um banco relacional, deixando o campo codfuncao permitindo null?
Depende do banco de dados e do modo como fez a constraint. Geralmente o defaul é não deixar inserir caso a constraint não seja satisfeita. Mas se o caso é de ser possÃvel incluir dados que podem não ser relacionados, então a constraint não deveria existir...
Cara acho que uma solução seria você cadastrar uma função como INDEFINIDA, assim quando você não souber a função você simplesmente coloca como INDEFINIDA, e ainda pode fazer de um jeito que se você deixar em branco ela joga indefinida como padrão.
A Ideia inicial de ter constraint é segurança... Nesse exemplo nao excluir uma funçao que esta sendo utilizada em um funcionario.
Porem tento sempre deixar o minimo de dados obrigatorios.
Se for consistir todos os campos derivados de um cadastro vou limitar muito o sistema.
Estou usando Mysql.
Porem tento sempre deixar o minimo de dados obrigatorios.
Se for consistir todos os campos derivados de um cadastro vou limitar muito o sistema.
Estou usando Mysql.
Esqueci de Comentar,
Coloco default 0 por que trato no sistema como numero, nem verifico se esta null nada.
WILLVIDAL sua ideia foi boa!!!
Caso nao tenha jeito de melhorar isso vou seguir seu exemplo!
Coloco default 0 por que trato no sistema como numero, nem verifico se esta null nada.
WILLVIDAL sua ideia foi boa!!!
Caso nao tenha jeito de melhorar isso vou seguir seu exemplo!
Bem a idéia é simples, a constraint valida dados quando eles existem. Zero, é valor, ou seja, se colocar 0 e não null a constraint vai validar. Então ficar numa sinuca de bico, ou coloca null ou coloca 0 (cadastrando uma função com código 0) ou desativa a constraint.
Entao o campo ja esta assim!
CodFuncao int(11) not null default 0
O banco consiste Null joga zero, depois consiste o 0 que nao existe na TB_Funcao.
A Alternativa e adicionar o codigo 0 na tabela com descricao [Ô][Ô].
Continua com a constraint ativa.
CodFuncao int(11) not null default 0
O banco consiste Null joga zero, depois consiste o 0 que nao existe na TB_Funcao.
A Alternativa e adicionar o codigo 0 na tabela com descricao [Ô][Ô].
Continua com a constraint ativa.
Beleza estou fazendo conforme a ideia do WILLVIDAL.
COLOQUEI CODIGO 0 NA TABELA.
COLOQUEI CODIGO 0 NA TABELA.
Tópico encerrado , respostas não são mais permitidas