<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
{font-family:Helvetica;
panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
{font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:宋体;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:宋体;}
span.apple-converted-space
{mso-style-name:apple-converted-space;}
span.EmailStyle19
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=ZH-CN link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><a name="_MailEndCompose"><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>+1,<o:p></o:p></span></a></p><p class=MsoNormal><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'>I am fan of checking the constraints in the controller level instead of relying on FK constraints itself, thanks.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div><p class=MsoNormal style='text-align:justify;text-justify:inter-ideograph'><span lang=EN-US style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D'>Best Regards,<o:p></o:p></span></p><p class=MsoNormal style='text-align:justify;text-justify:inter-ideograph'><span lang=EN-US style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:#1F497D'>Dave Chen<o:p></o:p></span></p></div><p class=MsoNormal><span lang=EN-US style='font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Morgan Fainberg [mailto:morgan.fainberg@gmail.com] <br><b>Sent:</b> Monday, March 09, 2015 2:29 AM<br><b>To:</b> David Stanek; OpenStack Development Mailing List (not for usage questions)<br><b>Subject:</b> Re: [openstack-dev] [Keystone]ON DELETE RESTRICT VS ON DELETE CASCADE<o:p></o:p></span></p></div></div><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><div id="bloop_customfont"><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif"'>On March 8, 2015 at 11:24:37 AM, David Stanek (<a href="mailto:dstanek@dstanek.com">dstanek@dstanek.com</a>) wrote:<o:p></o:p></span></p></div><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px'><div><div><div><div><div><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'><br>On Sun, Mar 8, 2015 at 1:37 PM, Mike Bayer<span class=apple-converted-space> </span><<a href="mailto:mbayer@redhat.com" target="_blank">mbayer@redhat.com</a>><span class=apple-converted-space> </span>wrote:<o:p></o:p></span></p><div id=":1yx"><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>can you elaborate on your reasoning that FK constraints should be used less<br>overall? or do you just mean that the client side should be mirroring the same<br>rules that would be enforced by the FKs?<o:p></o:p></span></p></div></div><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'><br>I don't think he means that we will use them less. Our SQL backends are full of them. What Keystone can't do is rely on them because not all implementations of our backends support FKs.<o:p></o:p></span></p></div></div></div></div></blockquote></div><p><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif"'>100% spot on David. We support implementations that have no real concept of FK and we cannot assume that a cascade (or restrict) will occur on these implementations.<o:p></o:p></span></p><p><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif"'><o:p> </o:p></span></p><p><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif"'>—Morga<o:p></o:p></span></p><div><blockquote style='margin-top:5.0pt;margin-bottom:5.0pt;orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px'><div><div><div><div><div><p class=MsoNormal style='margin-bottom:12.0pt'><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'><o:p> </o:p></span></p></div><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>--<o:p></o:p></span></p><div><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>David<br>blog:<span class=apple-converted-space> </span><a href="http://www.traceback.org" target="_blank">http://www.traceback.org</a><br>twitter:<span class=apple-converted-space> </span><a href="http://twitter.com/dstanek" target="_blank">http://twitter.com/dstanek</a><o:p></o:p></span></p><div><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>www:<span class=apple-converted-space> </span><a href="http://dstanek.com" target="_blank">http://dstanek.com</a><o:p></o:p></span></p></div></div></div></div><p class=MsoNormal><span lang=EN-US style='font-size:10.0pt;font-family:"Helvetica","sans-serif";color:black'>__________________________________________________________________________<span class=apple-converted-space> </span><br>OpenStack Development Mailing List (not for usage questions)<span class=apple-converted-space> </span><br>Unsubscribe: <a href="mailto:OpenStack-dev-request@lists.openstack.org?subject:unsubscribe">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><span class=apple-converted-space> </span><br><a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><span class=apple-converted-space> </span><o:p></o:p></span></p></div></div></blockquote></div></div></div></body></html>