database - 如何设计模式多对多关系
问题描述
我有客户表和保单表和承保范围表。
- 每个客户有 1 个或多个保单
- 每份保单有 1 位客户
- 每份保单有 1 个或多个承保范围,每个承保范围出现在 1 个或多个保单中
我的问题是,当我有多重覆盖的政策时,我不知道如何在架构中实施它,所以当我打开政策时,我希望能够为我的政策添加多重覆盖。
架构会是什么样子?
向所有人致以最诚挚的问候
解决方案
从我的角度来看,显示比解释更简单。这是 Oracle 语法,但没关系。我只使用了必要的主键和外键列,只是为了说明问题。
客户很简单:
SQL> create table customer
2 (id_customer number primary key);
Table created.
策略有一个外键约束指向customer
:
SQL> create table policy
2 (id_policy number primary key,
3 id_customer number references customer
4 );
Table created.
覆盖范围也很简单:
SQL> create table coverage
2 (id_coverage number primary key);
Table created.
这是困扰您的问题:如何将具有多个覆盖范围的保单存储在单独的表格中!其列构成外键约束,指向适当的表,而其主键是复合的 & 由两列组成:
SQL> create table policy_x_coverage
2 (id_policy number references policy,
3 id_coverage number references coverage,
4 --
5 constraint pk_pxc primary key (id_policy, id_coverage)
6 );
Table created.
SQL>
推荐阅读
- java - 使用 GSON 解析带有元素数组的 JSON 对象
- c++ - C++ Primer 12.1:我可以用静态向量实现 StrBlob
班内成员? - php - 在 Woocommerce 3 中删除订单项目后未保存重新计算的总数
- html - 阅读器中的 AMP 图像
- jquery - jquery datetimepicker 更改数据格式
- javascript - 速率限制问题,循环通过动态 Promise 请求
- android - ffmpeg for android,编码h264内存不足
- python - pandas.read_csv() 将 TRUE 解释为布尔值,我需要一个字符串
- batch-file - 批处理脚本中的 MOVE 命令:移动时出错
- lua - 我试图弄清楚如何反编译这个混淆的 Lua 脚本