我在后端有一个关系数据库(MySQL),在前端有一个很酷的BackboneJS。我有几个表( BackboneJS术语中的模型)是通过外键互连的。
问题
我如何摧毁一个特定的模型,使销毁级联所有的儿童模型?
示例
考虑一下这个快速模式:
PERSON
id
name
PHONE_NUMBER
id
person_id
number
EMAIL_ADDRESS
id
person_id
email考虑到我们有一个人“杰克”存储在DB与一些电话号码和电子邮件地址。此外,我们为所有3个表定义了BackboneJS模型/集合,并将数据加载到它们中。前端的用户决定点击删除Jack的记录。
下面是删除Jack所有记录的几种方法:
APPROACH#1
在与杰克相关的所有型号的PhoneNumbers和EmailAddresses上调用“破坏”,然后对杰克本身调用“破坏”。
问题
APPROACH#2
在数据库级别定义外键关系,以确保删除PERSON行时PHONE_NUMBERs和EMAIL_ADDRESSes的级联删除。然后“摧毁”BackboneJS模型的杰克在前面。
APPROACH#3
在服务器端的应用程序上创建一个URL“/- delete - person”(确保删除一个带其所有受抚养人的人),并从前端调用它,而不是调用杰克上的BackboneJS的Model#destroy。
因此,对于这个简单的问题,似乎没有完美的解决方案。你也面对它了吗?你采取了什么方法,为什么会更好?
发布于 2013-10-16 04:20:34
我遇到了一个类似的问题,我采用了方法2,除了一个不同之处。
如果可以,可以将Jack表示为包含phone_number和email_address的单个主干模型。您可以将Jack模型传递给其他主干视图以共享Jack的模型数据,然后可以在Jack模型上调用destroy。
在后端,我使用了一个on delete cascade,这样我就可以进行查询了:
delete from PERSON where id = JACK_ID;
我不知道mysql的语法,但如下所示:
PERSON
id
name
PHONE_NUMBER
id references PERSON (id) on delete cascade
person_id
number
EMAIL_ADDRESS
id references PERSON (id) on delete cascade
person_id
email我不确定这是否适合您当前的问题上下文,但这与我所做的类似,而且它对我有用。
https://stackoverflow.com/questions/19394242
复制相似问题