4 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
第三個(gè)選項(xiàng)是創(chuàng)建一個(gè)“Policy”表,然后是一個(gè)“SectionsMain”表,它存儲(chǔ)所有部分類型中共同的所有字段。然后為每種類型的部分創(chuàng)建其他表,這些表只包含不常見的字段。
確定哪個(gè)最佳取決于您擁有的字段數(shù)以及編寫SQL的方式。他們都會(huì)工作。如果你只有幾個(gè)領(lǐng)域,那么我可能會(huì)選擇#1。對(duì)于“很多”的領(lǐng)域,我會(huì)傾向于#2或#3。

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
根據(jù)提供的信息,我將對(duì)數(shù)據(jù)庫建模以具有以下內(nèi)容:
政策
POLICY_ID(主鍵)
負(fù)債
LIABILITY_ID(主鍵)
POLICY_ID(外鍵)
性能
PROPERTY_ID(主鍵)
POLICY_ID(外鍵)
......依此類推,因?yàn)槲蚁M叩拿總€(gè)部分都有不同的屬性。否則,可能會(huì)有一個(gè)SECTIONS
表,除此之外policy_id
,還有section_type_code
...
無論哪種方式,這將允許您支持每個(gè)策略的可選部分......
我不明白你對(duì)這種方法的不滿意 - 這是你在保持參照完整性而不是復(fù)制數(shù)據(jù)的同時(shí)存儲(chǔ)數(shù)據(jù)的方式。這個(gè)詞是“標(biāo)準(zhǔn)化的”......
因?yàn)镾QL是基于SET的,所以它對(duì)于程序/ OO編程概念來說相當(dāng)陌生,并且需要代碼從一個(gè)領(lǐng)域轉(zhuǎn)換到另一個(gè)領(lǐng)域。通常會(huì)考慮ORM,但它們?cè)诖笈繌?fù)雜系統(tǒng)中不能很好地工作。

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
另一種方法是使用INHERITS
組件。例如:
CREATE TABLE person ( id int , name varchar(20), CONSTRAINT pessoa_pkey PRIMARY KEY (id));CREATE TABLE natural_person ( social_security_number varchar(11), CONSTRAINT pessoaf_pkey PRIMARY KEY (id)) INHERITS (person);CREATE TABLE juridical_person ( tin_number varchar(14), CONSTRAINT pessoaj_pkey PRIMARY KEY (id)) INHERITS (person);
因此,可以在表之間定義繼承。
添加回答
舉報(bào)