2016-12-31 46 views
4

我有一个XML接口,包含我需要解析并插入到数据库中的条目。这些条目具有所有必需的信息,但我想规范化数据库,因此尝试从基本信息生成对象。从字符串计算的id作为数据库密钥

这是基本条目的例子:

<entry url="http://example.com" author="Ex1" title="Title" category="Category1"/> 

而且我基本上是希望达到以下基本对象(伪):

class entry: 
    entryID; (PK) 
    url; 
    title; 
    authorID; (FK) 
    categoryID; (FK) 

class author: 
    authorID; (PK) 
    name; 

class category: 
    categoryID; (PK) 
    name; 

当然,这造成了我需要插入的问题类别和作者在我插入实际条目前不会违反参照完整性约束,但我不想将作者和类别写入数据库,只是为了立即恢复其新的键并将它们写回到条目中那会减慢性能显着。

是否有这种问题的推荐方法,或者我应该根据类别和作者的名称计算散列?

+0

什么数据库供应商? –

+0

我使用postgre sql – narain

回答

0

您可以在表中使用WITH查询先插入数据,返回它的键,然后插入到另一个表:

WITH author AS (
    INSERT INTO d_author (name) 
    values ($1) RETURNING id) 
insert to maintable (id) 
    select id from author 

(例如,通过心脏打字,看https://www.postgresql.org/docs/current/static/queries-with.html为与查询的全部细节) 。