团队开发了一款类似 ERP 的企业的业务管理系统对外售卖,数据约束(外键、触发器、存储过程等)是放在数据库层面,还是放在代码层面?
資深大佬 : einsdisp 5
这款产品有一点要注意:
某些客户可能已经有正在用的管理系统软件,我们需要把客户目前再用的管理系统的数据库导入我们的产品的数据中。不同的产品之间,数据库的设计并不完全一致,迁移当然无法做到所有信息都能“无损”迁移,但业务核心该有的关键字段基本都大同小异,关键数据基本都能迁移。
关于数据库设计与数据迁移,有两种架构,选哪个:
-
数据一致性约束放在数据库层面(外键、触发器、存储过程等),当然代码层面也尽量加入用户输入验证与数据一致性检查,只不过以数据库的检查为主。给客户导数据的时候,针对性编写 SQL 文件,直接进行数据库转换。
-
数据一致性约束放在代码层面,数据库完全不使用外键、触发器、存储过程等约束,给客户导数据的时候,不写 SQL,而是直接写代码,使用代码一行一行读取老数据库,然后在代码层面进行数据转换,然后再用代码一行一行插入新数据库。
PS:客户的数据量都不会太大,基本不会涉及分库分表。
大佬有話說 (12)