Q: 如何在开发后期修改表结构对现有程序影响最小
- 表设计是预留一个无任何业务意义的字段,比如userFiled1,userField2,....方便以后与具体业务字段映射
- 设计一个特殊的字段存放XML文件,XML文件中存放自定义的结构,方便系统扩充。存取是需要解析XML字符串
- 通过象Hibernate这种物理表结构和对象逻辑结构的映射。修改发生在物理表结构和hibernate mapping 文中
- 在java类中,用不可变的字符串定义了表名和字段名。如
public const String CUSTOMERS_TABLE = "Customers";
public const String EMAIL_FIELD = "Email";
public const String NAME_FIELD = "Name";
这样修改只发生在少量的地方。
Q:如何提高性能
- 为特殊的业务需求,比如支付平台的reconciliation和settlement,建一张影子表(比如paymentShadow),冗余其他相关表的字段。通过这种手段减少关联查询提高效率。
- 不设外键甚至主键,这种方式有点像No SQL的方式,但确实在商业应用系统中碰到过。