Java 更新一对多表的最佳实践是什么
我有两张桌子。 一个表是Java 更新一对多表的最佳实践是什么,java,sql,oracle,Java,Sql,Oracle,我有两张桌子。 一个表是USER,另一个表是USER\u MULTIVALUED\u ATTRIBUTES。一个USER有许多USER\u多值属性大约15个属性。USER表有18行,USER\u多值属性有100行。 DDL就像 create table USER ( ENTRYUUID VARCHAR2(36) not null, USERNAME VARCHAR2(254)
USER
,另一个表是USER\u MULTIVALUED\u ATTRIBUTES
。一个USER
有许多USER\u多值属性
大约15个属性。USER
表有18行,USER\u多值属性
有100行。
DDL就像
create table USER
(
ENTRYUUID VARCHAR2(36) not null,
USERNAME VARCHAR2(254) not null,
EMAILHASH VARCHAR2(128) not null,
EXTERNALID VARCHAR2(256),
DISPLAYNAME VARCHAR2(512),
GIVENNAME VARCHAR2(256),
...
}
create table USER_MULTIVALUED_ATTRIBUTES
(
ATTRIBUTEID NUMBER not null
ENTRYUUID VARCHAR2(36) not null,
ATTRIBUTENAME VARCHAR2(64) not null,
ATTRIBUTETYPE VARCHAR2(64),
ATTRIBUTEVALUE VARCHAR2(512) not null,
CREATETIME TIMESTAMP(6) default SYSDATE,
LASTMODIFIEDTIME TIMESTAMP(6) default SYSDATE,
USERBUCKETID NUMBER default 0 not null
)
现在我想对大约200000个用户进行路径更新。首先,逐个更新USER
表,
关于更新USER\u MULTIVALUED\u ATTRIBUTES
表,一种方法是逐个更新USER,删除所有MULTIVALUED\u属性,并为每个用户插入新的MULTIVALUED\u属性。
另一种方法是逐个更新用户,选择所有多值_属性并与输入的多值_属性进行比较,然后更新更改的多值_属性。
哪条路更好?您还有其他问题吗?对不起,我听不懂您的问题。我猜这些表是基于
ENTRYUUID
链接的,还是基于ENTRYUUID和ORGANIZATIONID
连接的?什么是唯一键?@通过ENTRYUUID连接两个表。更新用户,并且他们是一个组织,并且具有相同的组织ID。因此,当您在User
上更新ORGANIZATIONID
时,您想在User\u MULTIVALUED\u ATTRIBUTES
上更新吗?永远不会修改ORGANIZATIONID。我从LDAP获取输入,并将用户信息更新到Oracle中。信息存储在User
和User\u MULTIVALUED\u ATTRIBUTES
中,我更改了描述并删除了组织ID
。有点混乱抱歉,我无法理解您的问题。我猜这些表是基于ENTRYUUID
链接的,还是基于ENTRYUUID和ORGANIZATIONID
连接的?什么是唯一键?@通过ENTRYUUID连接两个表。更新用户,并且他们是一个组织,并且具有相同的组织ID。因此,当您在User
上更新ORGANIZATIONID
时,您想在User\u MULTIVALUED\u ATTRIBUTES
上更新吗?永远不会修改ORGANIZATIONID。我从LDAP获取输入,并将用户信息更新到Oracle中。信息存储在User
和User\u MULTIVALUED\u ATTRIBUTES
中,我更改了描述并删除了组织ID
。有点混乱