我有两种不同类型的用户-假设供应商和人工。它们是不重叠且不覆盖的(即,某些用户可能既不是卖方也不是劳动力,而卖方永远不可能是劳动力)。
SQL表示形式如下:
CREATE TABLE users(id INTEGER PRIMARY KEY, ...)
CREATE TABLE vendors(id INTEGER PRIMARY KEY REFERENCES users(id), ...)
CREATE TABLE labour(id INTEGER PRIMARY KEY REFERENCES users(id), ...)
但是用TypeORM表示这一点的好方法是什么?
这是一种可能,但这不是一个好的设计:
@Entity('users')
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
public id: number;
@OneToOne(type => Vendor, v => v.user, { nullable: true })
vendor: Vendor;
@OneToOne(type => Labour, l => l.user, { nullable: true })
labour: Labour;
}
@Entity('vendors')
export class Vendor extends BaseEntity {
@PrimaryColumn()
public id: number;
@OneToOne(type => User, u => u.vendor)
@JoinColumn({ name: 'id' })
user: User;
}
...
有没有更好的方法?最好只保留反向关系吗?