Cross-table constraint
am 09.11.2009 22:55:02 von Sebastiaan van Erk--------------ms000109050203060401020208
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Hi,
I have the following model:
Domain (*)<-(1) Account (*)<-(1) User
That is, each user belongs to exactly 1 account, an account can have
multiple users; each account belongs to a single domain, and a domain
can have multiple accounts.
A user has an email address, which must be unique across the domain
(since it's used to log into that domain: on login you select the domain
and then enter your email and password).
However, the email address need *not* be unique across different
domains. Thus, I want the following combination to be unique:
(Domain.id, User.email)
Is there any way I can do this without duplicating the domain id in the
User table?
Regards,
Sebastiaan
--------------ms000109050203060401020208
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature
MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEH AQAAoIIJUTCC
AwMwggJsoAMCAQICEGLYTbNs7ILV8FjWe4hYppAwDQYJKoZIhvcNAQEFBQAw YjELMAkGA1UE
BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4x LDAqBgNVBAMT
I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA5MDcw MTA1MjIxMVoX
DTEwMDcwMTA1MjIxMVowaDEQMA4GA1UEBBMHdmFuIEVyazETMBEGA1UEKhMK U2ViYXN0aWFh
bjEbMBkGA1UEAxMSU2ViYXN0aWFhbiB2YW4gRXJrMSIwIAYJKoZIhvcNAQkB FhNzZWJzdGVy
QHNlYnN0ZXIuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA xnkA/HlKscOk
7wNt76nwOKIIsm3qlgX3Sf3jNOl+gVBi4Fq3n5BfDR0FBj4pbiQT+Q9s2oTJ coX3/AdZuNga
UH/6+dhcyD2kxgvVK8WK41WG9WyzPkfw4M2g3e51NrEsGC+H+eMbbvlrzvPa /asUwqERy60u
6XIlj5kwO/QxHx2iJpgUFtkOYr1BSkP0FC/Qe8VbF7Fi1fu3I5Rk/+9j49OM /IBMbmEkKFoD
/e8KgyhCgREAv08/yntwHRos5m6AK27zR+4dTsbb/B8fCjRT8tttCvbo1C/U iuM7u/YcfY0d
8mLp+dRI7xpHl/9Fp86q31OmAfwD1tw9UYL1DnIbHwIDAQABozAwLjAeBgNV HREEFzAVgRNz
ZWJzdGVyQHNlYnN0ZXIuY29tMAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEF BQADgYEAw63Z
9kpNbme1LCtCeAvXVM8oTGJy0L85qtbO5DUBxjmBTBMSe1Kbn160wibMP++C v1p/PwCumRbe
XjJSI3HclQasaF8FpDWtRQlHFj/w/3Q2GsBpoHxSOENjY/+jgtDTOnX5+0lP HaN/iQTAdW8+
rm0P+FIKeYRpdOjFsIoeudYwggMDMIICbKADAgECAhBi2E2zbOyC1fBY1nuI WKaQMA0GCSqG
SIb3DQEBBQUAMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29u c3VsdGluZyAo
UHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwg SXNzdWluZyBD
QTAeFw0wOTA3MDEwNTIyMTFaFw0xMDA3MDEwNTIyMTFaMGgxEDAOBgNVBAQT B3ZhbiBFcmsx
EzARBgNVBCoTClNlYmFzdGlhYW4xGzAZBgNVBAMTElNlYmFzdGlhYW4gdmFu IEVyazEiMCAG
CSqGSIb3DQEJARYTc2Vic3RlckBzZWJzdGVyLmNvbTCCASIwDQYJKoZIhvcN AQEBBQADggEP
ADCCAQoCggEBAMZ5APx5SrHDpO8Dbe+p8DiiCLJt6pYF90n94zTpfoFQYuBa t5+QXw0dBQY+
KW4kE/kPbNqEyXKF9/wHWbjYGlB/+vnYXMg9pMYL1SvFiuNVhvVssz5H8ODN oN3udTaxLBgv
h/njG275a87z2v2rFMKhEcutLulyJY+ZMDv0MR8doiaYFBbZDmK9QUpD9BQv 0HvFWxexYtX7
tyOUZP/vY+PTjPyATG5hJChaA/3vCoMoQoERAL9PP8p7cB0aLOZugCtu80fu HU7G2/wfHwo0
U/LbbQr26NQv1IrjO7v2HH2NHfJi6fnUSO8aR5f/RafOqt9TpgH8A9bcPVGC 9Q5yGx8CAwEA
AaMwMC4wHgYDVR0RBBcwFYETc2Vic3RlckBzZWJzdGVyLmNvbTAMBgNVHRMB Af8EAjAAMA0G
CSqGSIb3DQEBBQUAA4GBAMOt2fZKTW5ntSwrQngL11TPKExictC/OarWzuQ1 AcY5gUwTEntS
m59etMImzD/vgr9afz8ArpkW3l4yUiNx3JUGrGhfBaQ1rUUJRxY/8P90NhrA aaB8UjhDY2P/
o4LQ0zp1+ftJTx2jf4kEwHVvPq5tD/hSCnmEaXToxbCKHrnWMIIDPzCCAqig AwIBAgIBDTAN
BgkqhkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rl cm4gQ2FwZTES
MBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFUaGF3dGUgQ29uc3VsdGlu ZzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMb VGhhd3RlIFBl
cnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1m cmVlbWFpbEB0
aGF3dGUuY29tMB4XDTAzMDcxNzAwMDAwMFoXDTEzMDcxNjIzNTk1OVowYjEL MAkGA1UEBhMC
WkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAq BgNVBAMTI1Ro
YXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMIGfMA0GCSqGSIb3 DQEBAQUAA4GN
ADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1BHCd3+n/ox7svc31W/Iadr1/DDph 8r9RzgHU5VAK
MNcCY1osiRVwjt3J8CuFWqo/cVbLrzwLB+fxH5E2JCoTzyvV84J3PQO+K/67 GD4Hv0CAAmTX
p6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3+wIDAQABo4GUMIGRMBIGA1Ud EwEB/wQIMAYB
Af8CAQAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDovL2NybC50aGF3dGUuY29t L1RoYXd0ZVBl
cnNvbmFsRnJlZW1haWxDQS5jcmwwCwYDVR0PBAQDAgEGMCkGA1UdEQQiMCCk HjAcMRowGAYD
VQQDExFQcml2YXRlTGFiZWwyLTEzODANBgkqhkiG9w0BAQUFAAOBgQBIjNFQ g+oLLswNo2as
Zw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82L8D0HFAgk3A8/a3hYWLD2ToZfoSx mRsAxRoLgnSe
JVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr394fWxghOrvbqNOUQGls1TXfjViF4 gtwhGTXeJLHT
HUb/XV9lTzGCA3EwggNtAgEBMHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoT HFRoYXd0ZSBD
b25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25h bCBGcmVlbWFp
bCBJc3N1aW5nIENBAhBi2E2zbOyC1fBY1nuIWKaQMAkGBSsOAwIaBQCgggHQ MBgGCSqGSIb3
DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA5MTEwOTIxNTUw MlowIwYJKoZI
hvcNAQkEMRYEFDRJ+a+yIkcOOlZBTiIqdAVFu7yvMF8GCSqGSIb3DQEJDzFS MFAwCwYJYIZI
AWUDBAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG9w0D AgIBQDAHBgUr
DgMCBzANBggqhkiG9w0DAgIBKDCBhQYJKwYBBAGCNxAEMXgwdjBiMQswCQYD VQQGEwJaQTEl
MCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UE AxMjVGhhd3Rl
IFBlcnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0ECEGLYTbNs7ILV8FjWe4hY ppAwgYcGCyqG
SIb3DQEJEAILMXigdjBiMQswCQYDVQQGEwJaQTElMCMGA1UEChMcVGhhd3Rl IENvbnN1bHRp
bmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNvbmFsIEZyZWVt YWlsIElzc3Vp
bmcgQ0ECEGLYTbNs7ILV8FjWe4hYppAwDQYJKoZIhvcNAQEBBQAEggEAVLlE Wt6yVdq0JTtt
KpttTVgLpa0gBCMehcL7fdiSF8s1y133WRa2glGCrNMdHvp8IxwJAu0GGXCh vLd51aRiv4zg
QdGZgRdezE3wuSTEpusNrh9xD0OpOh39NHDoXlP5KIZ9vta+GVXIP8ECat8b Fm+nLzl2z51w
7px3wBYjFTsRp1MGnrhr9uEPjKCTIfB/f/YQlh4vg1neyFposXXL3k/9EPwH oTTgMdIKalEP
HdVbntYmcWUaWN9AN6YvAl3aHVc3O/adXVW7y4xHwf0cYEE2Yb+S0udPnyg0 eOQaeRIS4ey/
AO6SniW5jh2CIaK5XMYXbgw2WMrt2Nmon+/CpAAAAAAAAA==
--------------ms000109050203060401020208--