请问我对支付相关数据表的数据库规范化设计是否正确?
支付相关数据表的规范化设计说明
咱们来梳理下这套支付相关数据表的规范化设计,从1NF到2NF的拆解如下:
1NF(第一范式)设计
第一范式要求每个属性都是原子性的,不能包含重复的属性组。这里的初始表结构为:
Payments(paymentid, courseid, userid, paymentoption, amount, paid date)
说明:paymentid 是该表的主键,唯一标识每一笔支付记录。
2NF(第二范式)设计
第二范式要求在满足1NF的基础上,消除非主属性对主键的部分依赖。这里将原表拆分为三个独立的表,具体如下:
Paymentsinfo表:存储支付核心信息Paymentsinfo(paymentid, paymentoption, amount, courseid)Paidcourseinfo表:存储已支付课程的详情信息Paidcourseinfo(courseid, courseduration, paymentsid)Payeeuserinfo表:存储支付用户与对应课程的关联信息Payeeuserinfo(paymentid, userid, courseid)
补充说明:paymentid 作为原 Payments 表的主键,在拆分后的表中承担关联各表的作用;courseid 既是关联各表的外键,同时也是部分表主键的组成部分,以此确保数据的关联性和完整性。
内容的提问来源于stack exchange,提问作者dilupa chandrasekara
相关产品推荐
相关产品推荐

