我是一个独立开发者,想要做一个理财记账的利用。不便中国基金、股票和虚构资产的收益汇总,并提供 AI 倡议。能帮我设计好相干的表构造嘛,应用 Prisma 语法,不容许应用自增 id。

当设计表构造时,应该思考如何组织和存储不同类型的资产信息,并且应该使其易于查问和更新。上面是一个简略的表结构设计,能够作为参考:

datasource db {  provider = "postgresql"  url      = "postgresql://user:password@localhost:5432/mydatabase"}model User {  id        String  @id @default(cuid())  name      String  email     String  @unique  password  String  accounts  Account[]}model Account {  id          String      @id @default(cuid())  name        String  accountType AccountType  balance     Float  currency    Currency  transactions Transaction[]  user        User        @relation(fields: [userId], references: [id])  userId      String}model Transaction {  id           String     @id @default(cuid())  amount       Float  date         DateTime  description  String  category     Category  subcategory  Subcategory?  assetType    AssetType  assetCode    String  assetName    String  assetSymbol  String?  assetIssuer  String?  assetUnit    Float?  exchange     Exchange?  account      Account    @relation(fields: [accountId], references: [id])  accountId    String}enum AccountType {  BANK  CREDIT_CARD  INVESTMENT}enum Currency {  USD  RMB  EUR}enum Category {  INCOME  EXPENSE  INVESTMENT}enum Subcategory {  STOCK  FUND  CRYPTO  BOND}enum AssetType {  FUND      // 基金  STOCK     // 股票  CRYPTO    // 虚构资产  OTHER     // 其余资产}enum Exchange {  SHSE      // 上海证券交易所  SZSE      // 深圳证券交易所  HKEX      // 香港证券交易所  NASDAQ    // 纳斯达克证券交易所  NYSE      // 纽约证券交易所  OTHER     // 其余交易所}

这个表构造蕴含三个实体:User、Account 和 Transaction。User 表保留用户的根本信息;Account 表保留用户的账户信息,包含账户类型、余额等;Transaction 表保留用户的交易记录,包含交易金额、日期、形容、类别等。

在这个表构造中,Account 和 Transaction 都蕴含一个枚举类型字段,用于辨别不同类型的资产,比方股票、基金和虚构资产等。另外,Transaction 表中还蕴含了一些其余的字段,用于记录资产的具体信息,比方资产代码、名称、交易所等。

须要留神的是,这只是一个根本的表结构设计,您可能须要依据您的具体需要进行调整和批改。同时,Prisma 反对多种数据库,您能够依据您的需要抉择适宜的数据库。另外,因为您要求不应用自增 id,所以我应用了 Prisma 提供的 @id @default(cuid()) 申明来指定一个应用 cuid 生成的随机字符串作为 id 字段。同时,我应用了枚举类型来示意不同的资产类型和交易类型,这样能够使代码更加可读和易于保护。最初,因为您须要反对多种类型的虚构资产,能够思考将虚构资产的具体信息存储在 Transaction 表的 assetCode、assetName、assetSymbol、assetIssuer 和 assetUnit 等字段中。