【发布时间】:2021-07-04 09:50:39
【问题描述】:
我正在使用 TypeORM 开发 NestJS 应用程序,并且有一个 Person 实体和一个 Business 实体。这些实体中的每一个都可以有 0 个或多个 Addresses。无论是Business 还是Person,地址字段都是相同的。因此,我想将所有地址放在一个表中,而不是管理 PersonAddress 和 BusinessAddress 表(前提是这是设计我的数据库的“正确”方式)。
目前,这里是我的Person 和Address 实体的一部分:
// person.entity.ts
export class Person {
@OneToMany(() => Address, (address) => address.person, { cascade: true})
addresses: PersonAddress[]
}
// address.entity.ts
export class Address {
@ManyToOne(() => Person, (person) => person.addresses)
person: Person
}
我相信对于 TypeORM,这是执行此操作的正确方法,但我希望能够删除 Address 到 Person 中的引用,以便我可以为 Business 使用相同的实体。
现在,我的问题分为两部分:
- 我想要的设计是设计数据库的正确方法吗?我有使用数据库和查询它们的经验,但没有设计它们。如果我想要做的是糟糕的数据库设计,那么我将继续为
Business和Person的地址创建一个单独的实体。 - 如果我想要的设计是正确的,我如何在 TypeORM 中定义实体来实现这个结果?
【问题讨论】:
标签: database-design nestjs typeorm