求教 mysql 表设计 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
kestrelBright
V2EX    程序员

求教 mysql 表设计

  •  
  •   kestrelBright 2022-10-10 12:18:55 +08:00 3029 次点击
    这是一个创建于 1097 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就是用户签订购房合同,然后每月还款。 现在设计了有一个签的合同表,还有一个用户还款记录表。

    需要搜索用户违约了几期,需要搜索某天有哪些用户违约。比如 1 号是 a 用户的还款日且未还款,那么搜 2 号 a 用户要出来,但是如果 b 用户已经违约,他还款日是 2 号,搜 2 号他不出来

    现在想法是两种,一种是签订了合同就把还款记录生成好,实际还款时再更新;一种是每次还款都更新一个下期还款日期

    但感觉都不大好,求大佬指教

    19 条回复    2022-10-12 10:34:42 +08:00
    7911364440
        1
    7911364440  
       2022-10-10 13:42:27 +08:00   2
    再建一张逾期表,通过定时任务每天统计有哪些用户未还款。
    用户违约了几期?可以通过用户的还款日以及用户最新的还款记录计算出来。
    某天有哪些用户违约?直接查逾期表
    jucelin
        2
    jucelin  
       2022-10-10 14:16:55 +08:00
    第一种。第二种不好,考虑影响因素太多
    wxf666
        3
    wxf666  
       2022-10-10 14:39:58 +08:00
    你是不知道怎么写 SQL 实现那俩搜索吗?

    还是写了 SQL ,但速度太慢,问怎么提速?


    要不放一下你当前的表结构和 SQL ?
    kestrelBright
        4
    kestrelBright  
    OP
       2022-10-10 15:03:31 +08:00
    @7911364440 谢谢
    @jucelin 谢谢

    @wxf666 想找个好点的方案
    Maxwe11
        5
    Maxwe11  
       2022-10-10 15:27:14 +08:00
    这种都是挺标准的金融信贷数据设计,都有成套的方案,做房贷的按理说你们那儿应该有对应懂产品的人;

    一般的标准结构都分这么几个部分:
    1 、用户系统,下属用户数据、扩展数据,征信数据,内部预授信数据,内部风控数据……
    2 、进件系统,产品,内容、合同……
    3 、信贷业务,细分里你说的那个部分,是结合产品、内容、合同和用户的数据,一般有还款计划表(就是贷款后要先把计划还款都列出来),实际还款(就是根据合同和实际还款行为的对应数据),一般的统计计算就是这几个数据和用户及合同这几个数据的联合;
    4 、业务催收数据;

    当然这里面还有各种配套的,什么卡 bin 、日期时间、息费规则、代收付配套接口等等等等等;

    房贷业务你们还要自己写???
    nothingistrue
        6
    nothingistrue  
       2022-10-10 15:48:55 +08:00
    两种都要有。第一种相当于将还款计划和还款历史两个实体合并成一个实体,未尝不可,当然分成两个实体也可以,但是,还款计划这个数据是必须有的。第二种的数据,是以用户为维度的逾期情况,这个数据是很有必要存在的,不然你逾期提醒都不好做。

    如果参考信用卡,你还需要一份数据,账单。当然你们要不是正规金融机构的话,还款计划、还款记录、账单,这三个可以合并成一个实体来处理。以用户为维度的逾期情况这个实体,就没法合并了,要合并它也是合并到用户实体上。

    其实这个设计过程,跟数据库没关系。你得先设计好了这些实体关系,然后再去往数据库上映射。
    wxf666
        7
    wxf666  
       2022-10-10 15:51:30 +08:00
    @kestrelBright 我觉得当前表结构,足够你用 SQL 实现那俩需求了

    不知你说的『当前方案不够好』,是不好在哪儿


    @7911364440 这个『逾期表』,是只能统计『当天』哪些用户违约,还是『任意一天』(楼主好像需要后者)
    xuelu520
        8
    xuelu520  
       2022-10-10 16:25:22 +08:00
    第一种,我看招行和京东白条,都是提前生成好每一期的金额
    lazyfighter
        9
    lazyfighter  
       2022-10-10 16:33:59 +08:00
    第一种,第二种本身的业务逻辑依赖用户来驱动说是话方案有点扯
    setsunakute
        10
    setsunakute  
       2022-10-10 17:35:17 +08:00
    第一种,一般逾期还款都有状态标记, 查询起来也很方便
    BQsummer
        11
    BQsummer  
       2022-10-10 18:26:26 +08:00
    第一种万一要调整还款计划怎么吧, 删了重新生成? 不如晚上跑批, 落一个逾期表
    optional
        12
    optional  
       2022-10-10 19:52:23 +08:00
    面向业务模型编程,而不是面向数据库编程,你的数据模型有状态变迁就通过 job 或者消息通知之类的方式完成状态迁移,而不是通过数据库延迟计算去满足。
    这个例子就是,每日逾期,可以每天脚本计算。
    fuxinya
        13
    fuxinya  
       2022-10-10 22:32:31 +08:00 via Android
    每个月的出账日,即生成所有用户的当月账单,记录最后还款期限日。然后根据还款期限日查询即可
    zhaogaz
        14
    zhaogaz  
       2022-10-10 22:56:23 +08:00
    都不对,你应该先设计业务模型,数据库层受业务模型约束,而不是先定义表结构,你弄反了。。
    golangLover
        15
    golangLover  
       2022-10-10 22:58:10 +08:00
    @Maxwe11 求教这些方案 / 设计在哪里可以看到。谢谢
    cowcomic
        16
    cowcomic  
       2022-10-11 00:04:10 +08:00
    如果只是用来进行还款记录和逾期搜索,第一种就能满足,觉得不太好的原因是还有别的业务吗?
    xuanbg
        17
    xuanbg  
       2022-10-11 09:44:48 +08:00
    客户是客户,合同是合同,计划是计划,履约是履约。这些数据都是独立的,也是通过业务相关联的。
    Maxwe11
        18
    Maxwe11  
       2022-10-11 19:39:44 +08:00
    @golangLover 关键词 [信贷系统+开源] ,随便找几个,在测试服务器上部署下,看看后台表结构借鉴一下就行了。
    kestrelBright
        19
    kestrelBright  
    OP
       2022-10-12 10:34:42 +08:00
    谢谢各位大佬
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5527 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 09:03 PVG 17:03 LAX 02:03 JFK 05:03
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86