在尝试解决我在使用不同类型的同一个表时遇到的问题时,我决定采用关系数据库的派对模型设计 - 使用多个表来表示子对象。
使用这篇文章和这篇文章作为指南,我决定使用多表继承构建一个派对模型。
这是我正在做的事情的基本表示(在伪 sql 中):
Parties
- ID, AUTO_INCREMENT
- Type
- Shared_Data
- Primary Key (ID, Type)
User_Sub
- ID
- Type, Default 'U'
- User_Data
- Primary Key (ID, Type)
- Foreign Key 'User-Party' (ID, Type) references (Parties.ID, Parties.Type)
Organization_Sub
- ID
- Type, Default 'O'
- Organization_Data
- Primary Key (ID, Type)
- Foreign Key 'Organization-Party' (ID, Type) references (Parties.ID, Parties.Type)
因为数据分布在多个表中,所以我希望能够一次读取父表和子表并对其进行更新。阅读很好,可以通过以下方式完成:
CREATE VIEW Users as
SELECT P.*, U.User_Data FROM Parties P
Inner Join Users_Sub U on P.id=U.id, P.type=U.type
但是,在 MySQL 中插入两者是不可能的(在其他风格中是否可能?)。难道不能以这种方式进行多表继承吗?将我所有的用户和组织列放入缔约方表可能会解决这个问题,但我会留下很多空字段。
对此的见解将不胜感激。