2016-12-31 22 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爲與查詢的全部細節) 。