soc*_*ket 5 java database-design jpa ebean playframework-2.0
我当然正在使用single table inheritance
OOP考虑因素的概念.
例如,PostLike
并TopicLike
从Like
类继承.
我发现这种方法存在两个问题:
我不是数据库专家,因此我想了解这个数据库设计的见解以及这两个问题是否至关重要.
如果你只有一个表而不是两个,那么读取会更快,因为你会避免"连接".但是你会使用更多空间,因为你会有一个额外的"dtype"列和一些空列.
我们来举个例子.这是模型(没有JPA注释):
public abstract class Like {
public Long id;
public String foo;
}
public class PostLike extends Like {
public String post;
}
public class TopicLike extends Like {
public String topic;
}
Run Code Online (Sandbox Code Playgroud)
你会得到表格Like
:
----------------------------------
|dtype | id | foo | topic | post |
----------------------------------
|post | 1 | a | NULL | p1 |
|topic | 2 | b | t1 | NULL |
----------------------------------
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,对于"PostLike"项,您将拥有NULL"主题"值.
但是现在,磁盘空间如果不是真正的问题.
我看到单表继承的唯一缺陷是,如果你有很多属性,列数可能很大,并且在模型中添加新属性/列更难(如果你必须应用数据库演变) .
而AFAIK,ebean只支持 "单表继承".