【发布时间】:2022-01-06 23:04:39
【问题描述】:
我正在尝试为我的项目创建架构。结构非常简单,但至少有一些方法可以使用 Prisma 来实现。我的大多数同事都建议我采用想法 2,但我进行了一些性能测试,结果很奇怪。
想象一下我们有文件并且文件类型很多的情况,例如发票、停车罚款、租金账单等。 一份文档应该只有一个文档详细信息对象。
我想在这里使用组合方法:
文档表
| ID | Document type (enum) | Invoice ID (fk) | Parking fine ID (fk) | Rent bill ID (fk) |
|---|---|---|---|---|
| 1 | "Invoice" | 1 | null | null |
| 2 | "Fine" | null | 1 | null |
| 3 | "Rent" | null | null | 1 |
发票表
| ID | Invoice number |
|---|---|
| 1 | QWERTY1234 |
停车罚款表
| ID | Car number |
|---|---|
| 1 | ZXC123 |
租金账单表
| ID | Aparatment number |
|---|---|
| 1 | 54 |
如您所见,我们有一个标题表(文档表)和包含详细信息的表。
第二种方法:
文档表
| ID | Document type (enum) |
|---|---|
| 1 | "Invoice" |
| 2 | "Fine" |
| 3 | "Rent" |
发票表
| ID | Invoice number | Document ID |
|---|---|---|
| 1 | QWERTY1234 | 1 |
停车罚款表
| ID | Car number | Document ID |
|---|---|---|
| 1 | ZXC123 | 2 |
租金账单表
| ID | Aparatment number | Document ID |
|---|---|---|
| 1 | 54 | 3 |
从 Prisma 的角度和代码中的用法来看,这两种解决方案完全相同。我相信这只是关系方向。但是,我用 300k 文件、100k 发票、100k 罚款和 100k 租金为这两个数据库播种。
我尝试使用“findMany”功能并获取所有文档,包括文档详细信息。使用第一个模型,我能够在出现“无法连接到数据库”错误之前获取大约 80k 行,第二个模型只允许获取 30k 行。
从您的角度来看,哪种方法更有效?它们之间有什么区别吗?
提前感谢您的任何建议!
【问题讨论】: