规范化是组织数据库结构的一种方法,旨在减少数据冗余并提高数据完整性。常用的规范化范式包括:
在某些情况下,出于性能考虑,可以进行反规范化。反规范化是适当地引入冗余数据,以减少查询时的联接操作,从而提高性能。
ER模型用于描述数据和数据之间的关系。它包括实体(如用户、订单)、属性(如用户名、订单金额)和关系(如用户与订单之间的一对多关系)。
数据完整性是指数据库中数据的准确性和一致性。常见的数据完整性约束包括:
事务是一个或多个SQL操作的集合,具有以下四个特性(ACID):
PostgreSQL 使用多版本并发控制(MVCC)来实现高效的并发控制。
备份是保护数据免受损失的重要手段。PostgreSQL 提供了多种备份和恢复方法:
使用 pg_dump 工具进行逻辑备份:
pg_dump dbname > dbname_backup.sql
恢复逻辑备份:
psql dbname < dbname_backup.sql
使用 pg_basebackup 工具进行物理备份:
pg_basebackup -D /path/to/backupdir -Fp -Xs -P
恢复物理备份涉及到将备份文件复制回数据目录,并启动数据库。
确保数据库的安全性非常重要。以下是一些常见的安全管理措施:
创建用户和角色:
- CREATE ROLE readaccess;
- CREATE USER alice WITH PASSWORD 'password';
- GRANT readaccess TO alice;
授予权限:
GRANT SELECT ON TABLE users TO readaccess;
PostgreSQL 支持 TLS/SSL 加密通信。配置SSL证书以启用加密:
编辑 postgresql.conf 文件,设置 ssl = on:
ssl = on
配置 pg_hba.conf 文件,启用加密连接:
hostssl all all 0.0.0.0/0 md5
配置审计日志记录用户活动和SQL查询。使用 pgaudit 扩展来实现审计功能:
安装 pgaudit:
CREATE EXTENSION pgaudit;
配置审计选项:
pgaudit.log = 'all'
设计一个图书管理系统,包括以下实体:
id,username,email)id,title,author,published_date)id,user_id,book_id,borrow_date,return_date)为上述系统定义外键约束,以确保数据完整性。
实现用户借阅图书的事务操作,确保数据一致性。
配置数据库用户权限,使得普通用户只能查询图书信息,而管理员可以执行所有操作。
- CREATE TABLE users (
- id SERIAL PRIMARY KEY,
- username VARCHAR(50) NOT NULL,
- email VARCHAR(100) NOT NULL
- );
-
- CREATE TABLE books (
- id SERIAL PRIMARY KEY,
- title VARCHAR(100) NOT NULL,
- author VARCHAR(100) NOT NULL,
- published_date DATE
- );
-
- CREATE TABLE borrow_records (
- id SERIAL PRIMARY KEY,
- user_id INTEGER REFERENCES users(id),
- book_id INTEGER REFERENCES books(id),
- borrow_date DATE NOT NULL,
- return_date DATE
- );
定义外键约束(已在上面的表定义中体现)。
用户借阅图书的事务操作:
- BEGIN;
-
- INSERT INTO borrow_records (user_id, book_id, borrow_date)
- VALUES (1, 2, CURRENT_DATE);
-
- UPDATE books
- SET status = 'borrowed'
- WHERE id = 2;
-
- COMMIT;
创建角色和用户:
- CREATE ROLE librarian;
- CREATE ROLE member;
- CREATE USER admin WITH PASSWORD 'adminpassword';
- CREATE USER user1 WITH PASSWORD 'userpassword';
-
- GRANT librarian TO admin;
- GRANT member TO user1;
授予权限:
- GRANT SELECT ON TABLE books TO member;
- GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO librarian;