Creación de relaciones entre Tablas
Creación de relaciones entre Tablas
Diseño App
- Icono
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
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
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
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
Publicar un comentario