多对多关系中的 Oracle 用户

Posted

技术标签:

【中文标题】多对多关系中的 Oracle 用户【英文标题】:Oracle users in many to many relationship 【发布时间】:2018-02-14 01:44:31 【问题描述】:

我正在创建一个数据库,该数据库将代表一个简单的视频游戏库存,其中用户将拥有某些项目的所有权。我希望在 dba_users 视图和我的 items 表之间形成多对多关系,以形成一个名为 userItems 的表。

我做了一些研究,发现问题在于 dba_users 是一个视图,不能有与之关联的外键。

我是否需要创建自己的 users 表,如果需要,如何让用户名与 dba_users 用户名匹配?

还有其他方法可以解决这个问题吗?谢谢!

【问题讨论】:

请查看How to create a Minimal, Complete, and Verifiable example,然后相应地编辑您的问题。 作为数据库用户与您的应用程序有什么关系? @GordonLinoff 每个项目都需要有一个所有者。该所有者将是用户。 【参考方案1】:

我认为您的关系实际上是通过交叉表实现的一对多/一对多。 像这样的:

create table item_inventory
( 
item_id varchar2(127),
username varchar2(30), 
constraint fk_inventory_user foreign key (username) references all_users(username),
constraint fk_inventory_item foreign key (item_id) references items(item_id) 
);

【讨论】:

这不起作用 - all_users(username) 不是 UNIQUE 。此外,对于非 dba 用户,它会说权限不足,因为 select any dictionary 权限不足以引用数据字典表/视图。

以上是关于多对多关系中的 Oracle 用户的主要内容,如果未能解决你的问题,请参考以下文章

如何处理mongodb中的多对多关系

在对象关系数据库(Oracle)中映射多对多关系

从laravel中的多对多关系中获取单列

具有额外多对多关系的 JPA 多对多

Oracle Apex 20 多对多关系 - 添加记录

(十三)Hibernate中的多表操作:单向多对多