我想使用Oracle SQL Developer为我的数据库表生成一个ER图,但我是Oracle和这个工具的新手.
在SQL Developer中创建ER图的过程是什么?
想象一下,你有2个实体,玩家和团队,玩家可以在多个团队中.在我的数据模型中,我有一个每个实体的表,以及一个用于维护关系的连接表.Hibernate可以很好地处理这个问题,但是我如何在RESTful API中公开这种关系呢?
我可以想几个方面.首先,我可能让每个实体都包含另一个实体的列表,因此Player对象将拥有它所属的Teams列表,并且每个Team对象都有一个属于它的Players列表.因此,要向团队添加播放器,您只需将播放器的表示形式发布到端点,例如POST /player或POST /team,并将相应的对象作为请求的有效负载.这对我来说似乎是最"RESTful"但感觉有点奇怪.
/api/team/0:
{
name: 'Boston Celtics',
logo: '/img/Celtics.png',
players: [
'/api/player/20',
'/api/player/5',
'/api/player/34'
]
}
/api/player/20:
{
pk: 20,
name: 'Ray Allen',
birth: '1975-07-20T02:00:00Z',
team: '/api/team/0'
}
Run Code Online (Sandbox Code Playgroud)
我能想到的另一种方法就是将关系本身作为一种资源来揭露.因此,要查看给定团队中所有玩家的列表,您可以执行GET /playerteam/team/{id}或类似的操作并获取PlayerTeam实体列表.要将球员添加到球队,请/playerteam使用适当构建的PlayerTeam实体作为有效负载进行POST .
/api/team/0:
{
name: 'Boston Celtics',
logo: '/img/Celtics.png'
}
/api/player/20:
{
pk: 20,
name: 'Ray Allen',
birth: '1975-07-20T02:00:00Z',
team: '/api/team/0'
}
/api/player/team/0/:
[
'/api/player/20',
'/api/player/5',
'/api/player/34'
]
Run Code Online (Sandbox Code Playgroud)
这是什么最好的做法?
我正在寻找一种暂时关闭所有数据库约束(例如表关系)的方法.
我需要将一个DB的表复制(使用INSERT)到另一个DB.我知道我可以通过以正确的顺序执行命令(不破坏关系)来实现这一点.
但是如果我可以暂时关闭检查约束并在操作完成后重新打开它会更容易.
这可能吗?
sql sql-server entity-relationship sql-server-2005 constraints
有没有办法从连接到MySQL Workbench的服务器获取数据库的ER模型?
它是否使用某种字节码修改原始类?
或者,也许Hibernate通过将给定对象与以前持久化的版本进行比较来获得脏状态?
我遇到了复杂对象的问题hashCode()和equals()方法.如果对象具有集合成员,并且循环引用也是一个问题,我觉得计算哈希代码会很慢.
如果Hibernate不会使用hashCode()/ equals()来检查脏状态,我想我不应该使用equals()/ hashCode()作为实体对象(而不是值对象),但我也担心如果相同的operator(==)是不够的.
所以,问题是:
Hibernate如何知道对象的属性是否发生了变化?
你建议覆盖复杂对象的hashCode()/ equals()方法吗?如果它们包含循环引用怎么办?
并且,
是hashCode()/ equals()只有这个id领域就足够了?
实际上有什么区别:
this.HasRequired(a => a.Something)
.WithMany()
.Map(a => a.MapKey("SomethingId"));
Run Code Online (Sandbox Code Playgroud)
和
this.HasRequired(a => a.Something)
.WithMany()
.HasForeignKey(a => a.SomethingId);
Run Code Online (Sandbox Code Playgroud) 我想使用Microsoft SQL Server Management Studio生成SQL数据库的ER图,但是,我不知道如何.
我在网上发现了这种技术http://forums.asp.net/t/1790223.aspx?Making+ER+Diagram+from+SQL+Server+2008+Database
但是,我无法看到第1步和第2步中提到的"数据库节点"或"数据库图"节点.
因此,请告诉我如何从现有数据库生成ER图.
更新:
从下面的评论中,我意识到我理解数据库节点意味着具有我的数据库名称的节点.但后来我的问题是我无法在我的数据库名称下找到"Database Diagrams"节点.我现在该怎么办才能看到它.
PS:它不是本地数据库.
另一个Hibernate问题......:P
使用Hibernate的Annotations框架,我有一个User实体.每个人都User可以拥有一群朋友:其他人User的集合.但是,我还没有弄清楚如何在User由Users 列表组成的类中创建多对多关联(使用用户朋友中间表).
这是User类及其注释:
@Entity
@Table(name="tbl_users")
public class User {
@Id
@GeneratedValue
@Column(name="uid")
private Integer uid;
...
@ManyToMany(
cascade={CascadeType.PERSIST, CascadeType.MERGE},
targetEntity=org.beans.User.class
)
@JoinTable(
name="tbl_friends",
joinColumns=@JoinColumn(name="personId"),
inverseJoinColumns=@JoinColumn(name="friendId")
)
private List<User> friends;
}
Run Code Online (Sandbox Code Playgroud)
用户朋友的映射表只有两列,这两者都是外键到uid该列tbl_users表.这两列是personId(应该映射到当前用户)和friendId(指定当前用户的朋友的id).
问题是,即使我已经预先填充了朋友表,使得系统中的所有用户都是所有其他用户的朋友,"朋友"字段仍会显示为空.我甚至尝试过切换关系@OneToMany,但它仍然是null(尽管Hibernate调试输出显示了一个SELECT * FROM tbl_friends WHERE personId = ? AND friendId = ?查询,但没有别的).
有关如何填充此列表的任何想法?谢谢!
java entity-relationship hibernate java-ee hibernate-annotations
Django models.ManyToManyField和models.ManyToManyRel?有什么区别?我对这些东西很困惑.
我有一些想法,有些是我随着时间的推移积累的,但我真的想知道在建模数据库时是什么让事情顺利进行: