最近公司仍给我一个项目让我自己去架构,先用powerdesigner进行数据库(Oracle)建模遇到了如下问题:
1.数据库表里关联字段用不用中间表好呢?
用户和角色,如果只存在一对一的关系,可以不使用中间表;如果存在一对多的关系,就必须使用中间表。
2.Oracle的ID采用自增长ID还是UUID好呢?
总结:
使用自增长做主键的优点:
1、很小的数据存储空间
2、性能最好
3、容易记忆
使用自增长做主键的缺点:
1、如果存在大量的数据,可能会超出自增长的取值范围
2、很难(并不是不能)处理分布式存储的数据表,尤其是需要合并表的情况下
3、安全性低,因为是有规律的,容易被非法获取数据
使用GUID做主键的优点:
1、它是独一无二的,出现重复的机会少
2、适合大量数据中的插入和更新操作,尤其是在高并发和分布式环境下
3、跨服务器数据合并非常方便
4、安全性较高
使用GUID做主键的缺点:
1、储空间大(16 byte),因此它将会占用更多的磁盘空间
2、会降低性能
3、很难记忆
要结合项目来选择:
1、项目是单机版的,并且数据量比较大(百万级)时,用自增长的,此时最好能考虑下安全性,做些安全措施。
2、项目是单机版的,并且数据量没那么大,对速度和存储要求不高时,用UUID。
3、项目是分布式的,那么首选UUID,分布式一般对速度和存储要求不高。
4、项目是分布式的,并且数据量达到千万级别可更高时,对速度和存储有要求时,可以用自增长。