我目前正在使用一个使用子类型/超类型结构的db。我想知道处理插入件的最佳方法。我是将多个表的填充保存在SQL本身中,还是使用PHP,甚至是两者的组合?
我正在使用MySQL / PHP (w/ Yii框架)
/编辑/
我不知道投反对票会有什么结果。没有意识到任何表格的重要性,因为这是一个一般的方法问题。但这里有一个例子。如果创建了一个缔约方,那么业务和用户如何使用该PartyId进行填充?SQL/PHP/两者都是?

发布于 2011-06-04 10:13:25
“标准”方法是为每个子类型创建一个可更新的视图。每个可更新的视图都用一个子类型连接该超级类型。
然后,应用程序代码通常使用视图,而不是基表。
在大多数平台上,这意味着您需要编写一些触发器。
发布于 2011-06-03 22:40:20
我完全不明白你的问题是什么。
如果需要在Party表上添加一行,则需要:
INSERT INTO party [...]如果您需要插入到业务中,您可以这样做
INSERT INTO business [...]就这么简单,是的。
如果您希望安全,那么两个查询都将运行,启动一个事务。
发布于 2011-06-04 04:54:16
我猜既然你把它放在Yii标签上,你真的在用Yii?通常要做的事情是为每个类创建一个activerecord类。您仍然需要将生成的PartyId传输到其他两个类中的一个。大多数情况下,这是通过分配完成的。
$oTransaction = Yii::app()->db->beginTransaction;
$oParty->save();
if ($oParty->PartyType == ...)
{
$oBusiness->BusinessId = $oParty->PartyId;
$oBusiness->save();
}
else
Do User things
$oTransaction->commit();也许最好这样做,甚至可以在AR类上使用继承,但我不知道这样做是否会节省任何工作。最好是给您的Party模型一个函数,这个函数可以返回业务实例,也可以返回用户实例。
最干净的方法也是在部件的afterSave()方法中保存业务/用户,这里有PartyId。但是你的政党模型需要有数据才能做到这一点。
https://stackoverflow.com/questions/6231350
复制相似问题