Creación de relaciones entre Tablas

  Creación de relaciones entre Tablas




Diseño App

  • Icono
  • Login



  • Menu en general


  • Menu consulta


  • Registros


  • Consultas




AdminBD.java

La relacion entidad se realiza vinculando cada una de las trablas por medio de una clave externa en este caso llamada Foreing key como podemos apreciar en el codigo, se crearon cuatro tablas CLIENTE, PEDIDO, PRODUCTO y FACTURA y se hizo una entidad relacional donde la tabla  PEDIDO tiene su clave foreign con la tabla CLIENTE, la tabla PRODUCTO tiene  su foreign con la tabla PEDIDO y la tabla FACTURA tiene su foreign con la tabla PRODUCTO.

  • Se utilizaron las siguientes extenciones: 
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;

  • se crearon dos metodos 
 @Override
public void onCreate(SQLiteDatabase BaseDatos)
{}
 @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{}
  • Esta clase que salio del MainActivity la activity (principal) se le puso de nombre AdminBD dando como resultado el siguiente codigo 
AdminBD
package com.example.bdferreteriacamilo;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class AdminBD extends SQLiteOpenHelper
{
public AdminBD(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase BaseDatos)
{
BaseDatos.execSQL
("create table CLIENTE" +
"(cedula int primary key," +
"nombre text, " +
"direccion text, " +
"telefono int)");
BaseDatos.execSQL
("create table PEDIDO" +
"(codigoP int primary key, " +
"descripcionP text, " +
"fechaP date, " +
"cantidadP int," +
"cedula int, " +
"foreign key (cedula) references CLIENTE(cedula))");
BaseDatos.execSQL
("create table PRODUCTO" +
"(codigoPr int primary key," +
"descripcionPr text," +
"valorPr money," +
"codigoP int , " +
"foreign key (codigoP) references PEDIDO(codigoP))");
BaseDatos.execSQL
("create table FACTURA " +
"(numeroF int primary key, " +
"fechaF date," +
"totalF money, " +
"codigoPr int, " +
"foreign key (codigoPr) references PRODUCTO(codigoPr))");

}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{

}
}


para poder almacenar la informacion en la base de datos se utilizaron cuatro activitys para cada tabla 

  • RegistroCliente
  • RegistroPedido
  • RegistroProducto
  • GenerarFactura
Donde se implemento el codigo de la siguiente manera 

  • RegistroCliente
Diseño 


Codigo
package com.example.bdferreteriacamilo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import android.content.Intent;
public class RegistroCliente extends AppCompatActivity
{
private EditText Cod_cli, Nom_cli, Dir_cli, Tel_cli;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registro_cliente);
Cod_cli = (EditText) findViewById(R.id.CCcli);
Nom_cli = (EditText) findViewById(R.id.NOcli);
Dir_cli = (EditText) findViewById(R.id.DIcli);
Tel_cli = (EditText) findViewById(R.id.TEcli);
}
public void RegistrarCliente(View view)
{
AdminBD admin = new AdminBD(this,"BaseDatos", null, 1);
SQLiteDatabase BaseDatosCL = admin.getWritableDatabase();
String Cedula = Cod_cli.getText().toString();
String Nombre = Nom_cli.getText().toString();
String Direccion = Dir_cli.getText().toString();
String Telefono = Tel_cli.getText().toString();
if(!Cedula.isEmpty() && !Nombre.isEmpty() && !Direccion.isEmpty() && !Telefono.isEmpty()) {
ContentValues RegistroCliente = new ContentValues();
RegistroCliente.put("cedula", Cedula);
RegistroCliente.put("nombre", Nombre);
RegistroCliente.put("direccion", Direccion);
RegistroCliente.put("telefono", Telefono);
BaseDatosCL.insert("CLIENTE", null, RegistroCliente);
BaseDatosCL.close();
Cod_cli.setText("");
Nom_cli.setText("");
Dir_cli.setText("");
Tel_cli.setText("");
Toast.makeText(this,"DATOS DEL CLIENTE INGRESADOS", Toast.LENGTH_LONG).show();
Intent intent = new Intent(RegistroCliente.this,RegistroPedido.class);
startActivity(intent);
}
else
{
Toast.makeText(this,"INGRESAR CORRECTAMENTE LOS DATOS DEL CLIENTE", Toast.LENGTH_LONG).show();
}
} }

  • RegistroPedido
Diseño 


Codigo
package com.example.bdferreteriacamilo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.widget.EditText;
import android.widget.Toast;
public class RegistroPedido extends AppCompatActivity
{
private EditText Cod_ped, Des_ped, Fec_ped, Can_ped;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registro_pedido);
Cod_ped = (EditText) findViewById(R.id.COped);
Des_ped = (EditText) findViewById(R.id.DEped);
Fec_ped = (EditText) findViewById(R.id.FEped);
Can_ped = (EditText) findViewById(R.id.CAped);
}
public void RegistrarPedido(View view)
{
AdminBD admin = new AdminBD(this,"BaseDatos", null, 1);
SQLiteDatabase BaseDatosPE = admin.getWritableDatabase();
String CodigoP = Cod_ped .getText().toString();
String DescripcionP = Des_ped.getText().toString();
String FechaP = Fec_ped.getText().toString();
String CantidadP = Can_ped.getText().toString();
if( !CodigoP.isEmpty() && !DescripcionP.isEmpty() && !FechaP.isEmpty() && !CantidadP.isEmpty())
{
ContentValues RegistroPedido= new ContentValues();
RegistroPedido.put("codigoP", CodigoP);
RegistroPedido.put("descripcionP", DescripcionP);
RegistroPedido.put("fechaP ", FechaP);
RegistroPedido.put("cantidadP", CantidadP);
BaseDatosPE.insert("PEDIDO", null, RegistroPedido);
BaseDatosPE.close();
Cod_ped.setText("");
Des_ped.setText("");
Fec_ped.setText("");
Can_ped.setText("");
Toast.makeText(this,"DATOS DEL PEDIDO INGRESADOS", Toast.LENGTH_LONG).show();
Intent intent = new Intent(RegistroPedido.this,RegistroProducto.class);
startActivity(intent);

}
else
{
Toast.makeText(this,"INGRESAR CORRECTAMENTE LOS DATOS DEL PEDIDO ", Toast.LENGTH_LONG).show();
}
}}
  • RegistroProducto
Diseño



Codigo
package com.example.bdferreteriacamilo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import android.content.Intent;
public class RegistroProducto extends AppCompatActivity
{
private EditText Cod_pro, Des_pro, Val_pro;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registro_producto);
Cod_pro = (EditText) findViewById(R.id.COpro);
Des_pro = (EditText) findViewById(R.id.DEpro);
Val_pro = (EditText) findViewById(R.id.VApro);
}
public void RegistrarProducto(View view)
{
AdminBD admin = new AdminBD(this,"BaseDatos", null, 1);
SQLiteDatabase BaseDatosPR = admin.getWritableDatabase();
String CodigoPr = Cod_pro.getText().toString();
String DescripcionPr = Des_pro.getText().toString();
String ValorPr = Val_pro.getText().toString();
if(!CodigoPr.isEmpty() && !DescripcionPr.isEmpty() && !ValorPr.isEmpty())
{
ContentValues RegistroProducto= new ContentValues();
RegistroProducto.put("codigoPr", CodigoPr);
RegistroProducto.put("descripcionPr", DescripcionPr);
RegistroProducto.put("valorPr ",ValorPr);
BaseDatosPR.insert("PRODUCTO", null, RegistroProducto);
BaseDatosPR.close();
Cod_pro.setText("");
Des_pro.setText("");
Val_pro.setText("");
Toast.makeText(this,"DATOS DEL PRODUCTO INGRESADOS", Toast.LENGTH_LONG).show();
Intent intent = new Intent(RegistroProducto.this,GenerarFactura.class);
startActivity(intent);
}
else
{
Toast.makeText(this,"INGRESAR CORRECTAMENTE LOS DATOS DEL PRODUCTO ", Toast.LENGTH_LONG).show();
}
}}
  • GenerarFactura
Diseño 


Codigo
package com.example.bdferreteriacamilo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import android.content.Intent;
public class GenerarFactura extends AppCompatActivity
{
private EditText Num_fac, Fec_fac, Tot_fac;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_generar_factura);
Num_fac= (EditText) findViewById(R.id.NUfac);
Fec_fac = (EditText) findViewById(R.id.FEfac);
Tot_fac = (EditText) findViewById(R.id.TOfac);
}
public void RegistrarFactura(View view)
{
AdminBD admin = new AdminBD(this,"BaseDatos", null, 1);
SQLiteDatabase BaseDatos = admin.getWritableDatabase();
String NumeroF = Num_fac.getText().toString();
String FechaF = Fec_fac.getText().toString();
String TotalF = Tot_fac.getText().toString();
if( !NumeroF.isEmpty() && !FechaF.isEmpty() && !TotalF.isEmpty())
{
ContentValues RegistroFactura= new ContentValues();
RegistroFactura.put("numeroF", NumeroF);
RegistroFactura.put("fechaF ", FechaF );
RegistroFactura.put("totalF ", TotalF);
BaseDatos.insert("FACTURA", null, RegistroFactura);
BaseDatos.close();
Num_fac.setText("");
Fec_fac.setText("");
Tot_fac.setText("");
Toast.makeText(this,"DATOS DE LA FACTURA INGRESADOS", Toast.LENGTH_LONG).show();
Intent intent = new Intent(GenerarFactura.this,ConsultaMenu.class);
startActivity(intent);
}
else
{
Toast.makeText(this,"INGRESAR CORRECTAMENTE LOS DATOS DE LA FACTURA ", Toast.LENGTH_LONG).show();
}
}}


Prueba


Explicación 




Prueba







Comentarios

Entradas más populares de este blog

Matrices Especiales

CUIDADOS EN EL LABORATORIO E INSTRUMENTOS DE MEDIDA