To design the database schema based on the entities and relationships we have identified, we can start by defining the table names and the columns for each table. Let's take a look at an example of how we can design the database schema for our payment app:
TEXT/X-JAVA
1public class DatabaseSchema {
2 // Define the table names
3 private static final String USERS_TABLE = "users";
4 private static final String PAYMENTS_TABLE = "payments";
5 private static final String TRANSACTIONS_TABLE = "transactions";
6 private static final String PRODUCTS_TABLE = "products";
7
8 // Define the columns for each table
9 private static final String USER_ID_COLUMN = "user_id";
10 private static final String NAME_COLUMN = "name";
11 private static final String EMAIL_COLUMN = "email";
12 private static final String PASSWORD_COLUMN = "password";
13
14 private static final String PAYMENT_ID_COLUMN = "payment_id";
15 private static final String AMOUNT_COLUMN = "amount";
16 private static final String DATE_COLUMN = "date";
17 private static final String STATUS_COLUMN = "status";
18
19 private static final String TRANSACTION_ID_COLUMN = "transaction_id";
20 private static final String TYPE_COLUMN = "type";
21 private static final String DESCRIPTION_COLUMN = "description";
22 private static final String TRANSACTION_DATE_COLUMN = "transaction_date";
23
24 private static final String PRODUCT_ID_COLUMN = "product_id";
25 private static final String PRODUCT_NAME_COLUMN = "product_name";
26 private static final String PRICE_COLUMN = "price";
27 private static final String QUANTITY_COLUMN = "quantity";
28
29 // Define the relationships using foreign keys
30 private static final String USER_PAYMENT_FK = "fk_user_payment";
31 private static final String USER_TRANSACTION_FK = "fk_user_transaction";
32 private static final String PAYMENT_TRANSACTION_FK = "fk_payment_transaction";
33 private static final String PAYMENT_PRODUCT_FK = "fk_payment_product";
34
35 // Define the create table statements for each table
36 private static final String CREATE_USERS_TABLE =
37 "CREATE TABLE IF NOT EXISTS " + USERS_TABLE + " ("
38 + USER_ID_COLUMN + " INT PRIMARY KEY AUTO_INCREMENT, "
39 + NAME_COLUMN + " VARCHAR(100) NOT NULL, "
40 + EMAIL_COLUMN + " VARCHAR(100) NOT NULL, "
41 + PASSWORD_COLUMN + " VARCHAR(100) NOT NULL)";
42
43 private static final String CREATE_PAYMENTS_TABLE =
44 "CREATE TABLE IF NOT EXISTS " + PAYMENTS_TABLE + " ("
45 + PAYMENT_ID_COLUMN + " INT PRIMARY KEY AUTO_INCREMENT, "
46 + USER_ID_COLUMN + " INT NOT NULL, "
47 + AMOUNT_COLUMN + " DECIMAL(10,2) NOT NULL, "
48 + DATE_COLUMN + " DATE NOT NULL, "
49 + STATUS_COLUMN + " VARCHAR(20) NOT NULL, "
50 + FOREIGN KEY ("
51 + USER_ID_COLUMN + ") REFERENCES "
52 + USERS_TABLE + "(" + USER_ID_COLUMN + "), "
53 + "FOREIGN KEY ("
54 + PAYMENT_ID_COLUMN + ") REFERENCES "
55 + TRANSACTIONS_TABLE + "(" + TRANSACTION_ID_COLUMN + "), "
56 + "FOREIGN KEY ("
57 + PAYMENT_ID_COLUMN + ") REFERENCES "
58 + PRODUCTS_TABLE + "(" + PRODUCT_ID_COLUMN + "))";
59
60 private static final String CREATE_TRANSACTIONS_TABLE =
61 "CREATE TABLE IF NOT EXISTS " + TRANSACTIONS_TABLE + " ("
62 + TRANSACTION_ID_COLUMN + " INT PRIMARY KEY AUTO_INCREMENT, "
63 + USER_ID_COLUMN + " INT NOT NULL, "
64 + TYPE_COLUMN + " VARCHAR(50) NOT NULL, "
65 + DESCRIPTION_COLUMN + " VARCHAR(200) NOT NULL, "
66 + TRANSACTION_DATE_COLUMN + " DATE NOT NULL, "
67 + "FOREIGN KEY ("
68 + USER_ID_COLUMN + ") REFERENCES "
69 + USERS_TABLE + "(" + USER_ID_COLUMN + "))";
70
71 private static final String CREATE_PRODUCTS_TABLE =
72 "CREATE TABLE IF NOT EXISTS " + PRODUCTS_TABLE + " ("
73 + PRODUCT_ID_COLUMN + " INT PRIMARY KEY AUTO_INCREMENT, "
74 + PRODUCT_NAME_COLUMN + " VARCHAR(100) NOT NULL, "
75 + PRICE_COLUMN + " DECIMAL(10,2) NOT NULL, "
76 + QUANTITY_COLUMN + " INT NOT NULL)";
77
78 public static void main(String[] args) {
79 // Execute the create table statements
80 executeCreateTableStatement(CREATE_USERS_TABLE);
81 executeCreateTableStatement(CREATE_PAYMENTS_TABLE);
82 executeCreateTableStatement(CREATE_TRANSACTIONS_TABLE);
83 executeCreateTableStatement(CREATE_PRODUCTS_TABLE);
84
85 System.out.println("Tables created successfully!");
86 }
87
88 private static void executeCreateTableStatement(String createTableStatement) {
89 try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/payment_app", "username", "password");
90 Statement statement = connection.createStatement()) {
91
92 statement.execute(createTableStatement);
93
94 } catch (SQLException e) {
95 e.printStackTrace();
96 }
97 }
98}
xxxxxxxxxx
99
}
```java
public class DatabaseSchema {
// Define the table names
private static final String USERS_TABLE = "users";
private static final String PAYMENTS_TABLE = "payments";
private static final String TRANSACTIONS_TABLE = "transactions";
private static final String PRODUCTS_TABLE = "products";
// Define the columns for each table
private static final String USER_ID_COLUMN = "user_id";
private static final String NAME_COLUMN = "name";
private static final String EMAIL_COLUMN = "email";
private static final String PASSWORD_COLUMN = "password";
private static final String PAYMENT_ID_COLUMN = "payment_id";
private static final String AMOUNT_COLUMN = "amount";
private static final String DATE_COLUMN = "date";
private static final String STATUS_COLUMN = "status";
private static final String TRANSACTION_ID_COLUMN = "transaction_id";
private static final String TYPE_COLUMN = "type";
private static final String DESCRIPTION_COLUMN = "description";
private static final String TRANSACTION_DATE_COLUMN = "transaction_date";
private static final String PRODUCT_ID_COLUMN = "product_id";
private static final String PRODUCT_NAME_COLUMN = "product_name";
private static final String PRICE_COLUMN = "price";
private static final String QUANTITY_COLUMN = "quantity";
OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment