根据 E - R 图设计数据库模型,包括表结构和关系,编写一个Java代码,包括创建数据库、创建表、设置主键和外键等,编写数据插入脚本,用于初始化一些基本数据,如用户类型、帖子分类等。
时间: 2024-10-13 21:18:56 浏览: 34
计算机软件-商业源码-实例88 数据库和数据表的自动创建.zip
在数据库设计中,E-R图(实体-联系模型)是用来表示实体及其之间的关系的一种工具。首先,我们需要根据E-R图中的实体和关系来确定数据库模式,包括表名、字段以及它们的数据类型和约束条件。
假设我们有一个简单的博客系统,有两个主要实体:`Users` 和 `Posts`,其中 `Users` 包括 `id`, `username`, `email`,而 `Posts` 包含 `id`, `title`, `content`, `userId` (外键)。
```plaintext
Users:
- id (int, primary key)
- username (varchar)
- email (varchar)
Posts:
- id (int, primary key)
- title (varchar)
- content (text)
- userId (int, foreign key references Users(id))
```
现在我们可以用Java代码来操作这些数据库:
```java
import java.sql.*;
public class DatabaseSetup {
private static final String DB_URL = "jdbc:mysql://localhost:3306/blog";
private static final String USER = "root";
private static final String PASSWORD = "your_password";
public static void main(String[] args) {
try {
// 1. 创建数据库连接
Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
Statement stmt = conn.createStatement();
// 2. 创建表
String createUserTable = "CREATE TABLE Users (" +
"id INT PRIMARY KEY AUTO_INCREMENT," +
"username VARCHAR(50), " +
"email VARCHAR(100))";
String createPostTable = "CREATE TABLE Posts (" +
"id INT PRIMARY KEY AUTO_INCREMENT," +
"title VARCHAR(100)," +
"content TEXT," +
"userId INT," +
"FOREIGN KEY (userId) REFERENCES Users(id))";
stmt.executeUpdate(createUserTable);
stmt.executeUpdate(createPostTable);
// 3. 初始化数据
String insertUser = "INSERT INTO Users (username, email) VALUES ('admin', 'admin@example.com')";
String insertPost = "INSERT INTO Posts (title, content, userId) VALUES ('First Post', 'Hello World!', 1)";
stmt.executeUpdate(insertUser);
stmt.executeUpdate(insertPost);
System.out.println("Tables created and data inserted successfully.");
// 关闭资源
stmt.close();
conn.close();
} catch (SQLException e) {
System.err.println("Error while creating tables: " + e.getMessage());
}
}
}
```
阅读全文