Usando Derby e Chave estrangeira

Boa tarde!

Conversando com meu primo ontem, comentei que estava inserindo + 6 campos em cada tabela do meu programa para guardar informações de criação e update dos registros( 6 campos iguais em 4 tabelas ), ele me disse que não é preciso fazer desta forma, que deveria utilizar chave estrangeria criando uma outra tabela alem das 4 já existentes e nesta 5º tabela inserir todas as informações das necessarias de criação e update.

class Usuario extends Info;
class Produto extends Info;
class Cliente extends Info;
class Pedido extends Info;
class Info; /* < Nova class com as informações de criação e update */

Sei criar a tabela e até consigo fazer funcionar com duas inserções no banco e 2 consultas(consultaria o usuario e depois o info), mas acredito que deva haver uma forma sql+java de fazer a inserção e consulta, ex:

String sql = "INSERT INTO TBL_USUARIOS AND TBL_INFO ... ";
String sql = "SELECT * AND * FROM TBL_USUARIOS AND TBL_INFO ..."; /* claro que obtendo a tbl_info e atraves da chave estrangeira chegar até o usuario da chave. */

Grato!

kra pelo que eu entendi ae, ele quis dizer pra vc criar uma unica tabela com informações de criação e update e relaciona-las às tabelas existentes usando chave estrangeira, não é isso?

se for não tem nada a ver com o java pq vc usaria essa tabela e depois faria as inserções e updates naturalmente no java…

Isso, mas essas inserções e updates são:
cadastro a entidade e as informações de update juntas em uma unica INSERT e depois executo,

/* esta forma se houver não sei fazer */

ou
cadastro a entidade no banco e depois a informação uma de cada vez?

String Sql_entidade = "insert into tb_usuario (usuario, senha, gma, tipo) values (?, ?, ?, ?)"; 
pstm = con.prepareStatement(Sql_entidade); 
pstm.set....;
pstm.set....;
pstm.set....;
pstm.set....;
pstm.execute();

String Sql_info = "insert into tb_info (usuario_c, gma_c, hora, data) values (?, ?, ?, ?)"; // armazenando a chave estrangeria claro^^. não coloquei aki.
pstm = con.prepareStatement(Sql_info); 
pstm.set....;
pstm.set....;
pstm.set....;
pstm.set....;
pstm.execute();

Tenho que fazer uma consulta em cada tabela ou tem como fazer uma unica consulta nas duas tabelas e dizer ao ResultSet qual tabela estou lendo?

Boa Tarde squall926 o que seu primo disse tem total sentido, pois se você fosse criar 6 campos iguais para cada tabela, você teria muita ambiguidade e prejudicaria e muito a eficiencia da sua base de dados, o que vc disse esta certo seria as suas 4 tabelas normais com seus campos especificos e uma tabela com os campos que seriam comum nas outras 4 tabelas, e em cada uma das outras quatro tabelas vc definiria uma Foreign Key referenciando a tabela info dessa forma você consegue inserir as informações referentes a tabela info e guardar o indice dessa inserção nas outras 4 tabelas, deixando seu banco otimizado, referente a inserção dos dados teria que ocorrer realmente em 2 SQL’s diferentes, sendo o primeiro Insert into referente ao registro de uma das 4 tabelas e depois sim realizar o segundo insert into referente aos dados que serão armazenados na tabela info, mais para realizar as Query’s de consulta, ou seja select você poderia trazer todos os dados em uma unica consulta usando comandos como inner join ou left join, procure um tutorial de como usa-los, se tiver mais alguma duvida, poste que nós tentaremos ajudar, abraços!!!