范式不匹配:
1.粒度问题
关系型数据库对UDT(自定义对象) 支持度不高,并且产品间几乎不兼容。
2.子类型问题
SQL数据库目前还缺乏一种表示多态关联的明显方式,一个外键约束会准确的引用一张目标表;但定义一个引用多张表的外键并不简单,你必须编写一个程序性约束强制实现这类完整性规则。
3.标识问题
数据库中如果找不到一个好的自然主键,则使用代理键(目前自己的项目全部使用代理键),代理键对程序通常没有任何意义,一般也不会呈现给用户,其存在的唯一目的就是识别应用程序内部的数据。
3.与关联相关的问题
在java中 想要关联对象 ,比较容易,无论单项双向关联,只需相互定义关联,在关系数据库中,有了外键甚至中间表就可以查询出来。
4.数据导航的问题
JAVA中 user.get.... .get.... 就可以了, 但是sql 需要先确定要访问对象网络的那一部分,否则一不小心就会检索数据太多浪费内存。这就是令人担心的N+1查询方式。