Jump to content


Flechaus

Member Since 05/04/2010
Offline Last Active 26/09/2015, 18:47
-----

Posts I've Made

In Topic: Normalização Base Dados

10/04/2010, 13:30

Boas,

estou a desenvolver uma base de dados mas estou ainda verde no que toca à normalização.
O que eu pretendo é o seguinte:
- Criar uma base de dados onde tenho uma tabela Entidade (Tipo entidade, Nome entidade,Morada,Telefone, Serviço); Tabela Visitas(Motivo da Visita, Data da visita); tabela Funcionário (Profissão,Nome,categoria, Morada,Especialidade)
- Modelo Relacional
- Normalização
- A ideia é criar uma base de dados de visitas aos funcionários.
Gostaria que me ajudassem.

obrigado.


Olá Mário...
Pelo que eu pude ver, vc terá 3(três) cadastros, um de empresas (entidades), um de visitas,
e um de funcionários, e vc pretende cadastrar (ou agendar) visitas as empresas cadastradas,
se for isso, vc deve relacionar assim:
empresas.codigo > visitas.empresa
funcionarios.codigo > visitas.funcionario
Sendo assim, vc precisará de dois relacionamentos, tendo a tabela visitas sempre como "filha" nos relacionamentos.
E vc precisará desses dois campos na tabela visitas: "empresa e funcionario" para fazer a identificação correta
das relações, e os tipos de campos usados nos relacionamentos devem ter exatamente o mesmo tipo nas duas tabelas.
A definição estrutural de um banco de dados, e mais principalmente seus relacionamentos, é um trabalho dentro de
análise de sistemas, e para tal, vc apenas precisa analisar de uma forma geral o assunto abordado pelo seu banco de
dados, e então vc enchergará os itens que precisarão ser cadastrados e como esses itens se relacionarão entre si.
Use seu senso de lógica, todo programador deve ter um senso de lógica bem apurado.
Espero ter conseguido te ajudar.
Boa sorte.

In Topic: Sql Complicado - Relacionar Registros

09/04/2010, 23:59

Olá, boa tarde.

Vamos ver se consigo explicar meu problema:

Tenho uma tabela:

codigo1 | codigo2
--------------------
A | B
A | C
D | A
C | E
F | G

Bem, essa é a estrutura de uma tabela onde armazeno a equivalencia de cada código, independente da coluna onde ele se encontra.
Por exemplo: Quais são os equivalentes do código A?
A = B, A = C, A = D.
Até ai, tudo bem. Basta pesquisar o código A nas duas colunas que terei os equivalentes a ele.
SELECT * FROM tabela WHERE codigo1='A' OR codigo2 = 'A'

Porém, com isso, logicamente, o código B = C por que AMBOS são equivalentes ao código A. Ou seja:
Se A = B e A = C então B = C. Certo?
Esse seria o objetivo dessa tabela. Fazer essa amarração entre código.

Agora seguindo essa linha de raciocínio, podemos dizer que A = E por que o C = E, e como o A = C, então também A = E
Mesmo não existindo esse registro na minha tabela, A = E, eu precisava exibir esse resultado, e ai que está o problema:
Como fazer um SQL para retornar essa 'equivalencias' para mim num único resultado?
(Poderia até ser uma procedure.)
O resultado que eu preciso seria: Quais os equivalentes a A?
Resposta: B, C, D e E

Será que deu pra entender meu problema?

Agradeço desde já pela ajuda.


Olá filipewan...
Pela minha experiência em programação, constatei duas coisas:
1) A organização geral do processamento de um sistema, deve ser o mais linear possível.
2) Quando nós não sabemos exatamente como fazer algo, geralmente sempre vamos pelo caminho mais difícil.
Na minha opinião, seu mecanismo de processamento não é linear. Por isso ficou complicado e vc engasgou neste ponto.
Eu acho que vc deveria realizar um outro formato de processamento, exemplo:
Uma tabela onde vc iria cadastrar todas as suas variáveis e seus respectivos valores.
Essa tabela poderia ter o nome de "variaveis" e ter dois campos: "nome", "valor".
No campo "nome" vai o nome das variáveis logicamente, e no campo "valor", seu valor numérico ou alfa-numérico.
Sendo assim, poderia ficar:
Nome|Valor
A | 25
B | 45
C | 35
D | 25
E | 25
Assim ficaria mais fácil de saber as equivalências da variável A. (seriam D, E)
Poderia utilizar duas consultas de seleção para isso, ou uma única com uma sub-consulta para obter o valor de A.
Espero ter te ajudado.
Boa sorte.

In Topic: Auto_Decrementar Campo No Mysql

09/04/2010, 23:43

Olá, eu tenho um campo id no mysql que é auto_increment
gostária de saber se existe uma forma de fazer um auto_decrement no mysql????

digamos assim, eu difino: 10000 e a cada nova geração do campo "ID" ele vai auto decrementar para 9999, 9998 e assim por diante.

desde já agradeço a atenção!


Olá Parenti...
Creio que não exista um antodecrement no MySQL, porém, tem como vc "emular" este recurso em seu sistema. Basta um pouco de imaginação.
Uma idéia:
Crie uma tabela que somente conterá um campo do tipo numérico, e este campo será seu limite máximo de "autodecrement".
Esta tabela pode se chamar "limite" somente conterá um campo de nome por exemplo "codigo_limite", e somente um registro.
Vc irá consultar esta tabela sempre que for inserir um registro baseado neste "limite de autodecrement".
Vc utilizará uma outra tabela para inserir registros. Exemplo de nome da tabela: "promocional"
Vc escreverá uma função para pegar o valor do campo "codigo_limite" da tabela "limite", e em seguida, irá atualizar este valor numérico em -1.
Desta forma, serão duas consultas SQL a serem executadas cada vez que esta função for executada. Uma de seleção e outra de atualização.
Exemplo:
select codigo_limite from limite;
update limite set codigo_limite = codigo_limite - 1;
Desta forma, vc pegará o valor atual do campo codigo_limite da tabela limite, e em seguida, atualizará o valor do campo para uma futura chamada a esta função.
E vc precisará adicionar uma verificação para conferir se o campo "codigo_limite" chegará a zero.
Se chegar, vc emite uma mensagem ao usuário, exemplo: "Acabaram as promoções disponíveis!"
Espero que tenha conseguido te ajudar.
Boa sorte.

In Topic: Select Entre Datas

09/04/2010, 23:22

Olá gente!

Estou com um problema para fazer um select entre duas datas.
Lembrnado que o campo data é do tipo varchar e as datas gravadas estão asssim(22/03/2010).
Já tentei isso:

select codigo, nome_completo, data_insc from inscricoes_cursos 
 where   data_insc between   '20/2/2010' AND  '20/3/2010' ;



flws...


Olá chipis...
Primeiramente, vc precisa dizer ao MySQL que o tipo de campo é DATE OU DATETIME, más, creio que para o seu caso
o tipo do campo pode ser DATE. E quando for efetuar uma comparação em cima do campo date ou lhe atribuir um conteúdo,
ou seja, uma data, precisa primeiro converter esta data para o formato ISO.
Sua instrução ficaria assim, observe:
select codigo, nome_completo, data_insc from inscricoes_cursos
where data_insc between '2010/02/20' AND '2010/03/20';
Vc ainda pode criar uma função em seu sistema para converter as datas digitadas pelo usuário para o formato ISO.
Espero que tenha conseguido te ajudar.
Boa sorte.

In Topic: Dslan

09/04/2010, 22:21

É o seguinte,pode até ser pergunta noob porque em programação não sei quase nada.

Baixei o Dslan,servidor de TW,mais o meu mysql da erro,eu tento tento abrir e da erro,o erro que aparece é o seguinte:


Diese eingabeforderung nicht waehread des Running beenden
Pleas dont close window while MySQL is running
MySQL is trying to start
Plase wait...
MySQL is starting with mysql\bin\my.cnf <console>
Can't start server : bind on TCP/IP port: No such file or directory
100221 18:45:27 [ERROR] Do you already have another MySQL running on port :
3306?
100221 18:45:27 [note] mysql\bin\mysqld Shutdown complete



MySQL konnte nicht gestartet werden
MySQL Could not be started
Pressione qualquer tecla para continuar...



Alguem me da uma ajuda,me diz qual o erro e o que tenho de fazer pra arruma-lo!


Olá Peterson...
Primeiramente, eu não conheço o Dslan servidor de TW, más, eu sei de uma coisa sobre o MySQL.
Se vc acabou de instalar o MySQL, ele por segurança bloqueia conexões TCP/IP.
Talvez, seja esse detalhe a fonte dos seu problema. Tente o seguinte..
Se vc tem o MySQL Administrator instalado em seu pc, abra-o e se conecte ao seu servidor MySQL
de preferência como usuário root, em seguida, clique em Startup Variables, e clique na guia
General Parameters. No espaço Networking, desmarque a opção Disable networking, e marque a
opção TCP Port e digite o número da porta desejado.
Caso vc não tenha o MySQL Administrator instalado, vá no site do MySQL e baixe-o.
A opção Disable networking quando marcada, torna seu servidor MySQL invisível na rede particular
e na internet.
A opção TCP Port configura uma porta para a conexão de um aplicativo cliente ao seu servidor MySQL.
Espero sinceramente que estas informações tenham conseguido te ajudar.
Boa sorte.

IPB Skin By Virteq