1. 数据库实体间联系类型解析
在数据库概念设计中,实体间联系类型(基数约束)是E-R模型的核心基础。理解这些联系类型对于后续的关系模式转换至关重要,直接影响外键设置、关联表设计等实现细节。让我们从实际业务场景出发,深入剖析三种基本联系类型。
1.1 一对一联系(1:1)
一对一联系在实际业务中相对少见,通常出现在需要严格隔离或特殊业务规则的场景。比如:
- 员工与工号:每个员工有且仅有一个唯一工号,每个工号也只对应一个员工
- 用户与登录凭证:出于安全考虑,将用户基本信息与认证信息分开存储
- 医院病房与病床:每个病房只放置一张特定病床,每张病床也只属于一个病房
提示:在设计1:1关系时,可以考虑将两个实体合并为一个,除非有明确的业务或安全需求需要分离。
实现方式通常有两种:
- 双向外键约束:两个表互相引用对方的主键
- 共享主键:一个表的主键同时作为另一个表的主键和外键
sql复制-- 用户与登录凭证的1:1关系实现
CREATE TABLE Users (
user_id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
-- 其他用户基本信息
);
CREATE TABLE Auth (
user_id INT PRIMARY KEY,
password_hash VARCHAR(255) NOT NULL,
last_login DATETIME,
FOREIGN KEY (user_id) REFERENCES Users(user_id)
);
1.2 一对多联系(1:N)
一对多联系是最常见的关系类型,体现了现实世界中的层级结构和归属关系。典型例子包括:
- 部门与员工:一个部门有多个员工,但每个员工只属于一个部门
- 客户与订单:一个客户可以下多个订单,但每个订单只属于一个客户
- 分类与商品:一个分类包含多个商品,但每个商品只属于一个分类
在关系数据库中,1:N联系通过在"多"端添加外键实现:
sql复制CREATE TABLE Department (
dept_id INT PRIMARY KEY,
dept_name VARCHAR(50) NOT N
