Primary Foreign relation in ACM | Community
Skip to main content
Level 2
August 10, 2020
Solved

Primary Foreign relation in ACM

  • August 10, 2020
  • 2 replies
  • 2206 views

Hi Experts,

 

If I understand correctly, if we declare a key in adobe data schema, it creates an unique index with not null constraint enforced in the backend table (not exactly an Oracle primary key).

I'm trying to implement Primary-Foreign key relation in ACM. I've declared a link between the tables (code below).
However, it doesn't enforce this in backend database (parent-child validations don't take place).
Sample code below:

Scenario: Parent table (test1) & child table (test2). Sample below:

test1: <element label="test1" name="test1"> <key internal="true" name="PKEY_t1"> <keyfield xpath="@col1"/> </key> <attribute label="col1" name="col1" type="long"/> <attribute label="col2" name="col2" type="string"/> <attribute label="col3" name="col3" type="string"/> </element>

 

 

test2: <element label="test2" name="test2"> <key internal="true" name="PKEY_t2"> <keyfield xpath="@col1"/> </key> <attribute label="col1" name="col1" type="long"/> <attribute label="col2" name="col2" type="long"/> <attribute label="col3" name="col3" type="string"/> <element label="test_link" name="test_link" target="pl_:test1" type="link"> <join xpath-dst="@col1" xpath-src="@col2"/> </element> </element>

 

Please suggest.

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by Milan_Vucetic

Hi @abhiseks1679239

define cardinality in the link according to your use case. 

Find the Links: relation between tables section here: link

Regards,

Milan

 

2 replies

Milan_Vucetic
Milan_VuceticAccepted solution
Level 9
August 11, 2020

Hi @abhiseks1679239

define cardinality in the link according to your use case. 

Find the Links: relation between tables section here: link

Regards,

Milan

 

Level 2
August 11, 2020

@milan_vuceticHi, after i created the tables...below was what got created:

Parent - pl_:test1

<element label="test2" name="test2-test_link" revLink="test_link" target="pl_:test2" type="link" unbound="true"> <join xpath-dst="@col2" xpath-src="@col1"/> </element>

 

Child - pl_:test2

<element label="test_link" name="test_link" revLink="test2-test_link" target="pl_:test1" type="link"> <join xpath-dst="@col1" xpath-src="@col2"/> </element>

 

I believe this was 1-1 cardinality which is created by default? Even so, i was able to insert a record in child table (test2), which didn't exist in parent table(test1). hence, my doubts.

 

If it's possible, can you give me an example of how you'd define a link of cardinality 1-N.

Thank you

Jonathon_wodnicki
Community Advisor
Community Advisor
August 12, 2020

Hi,

 

Relationships defined in ACC are used only by ACC software, not the RDBMS software.

 

Thanks,

-Jon

Level 2
August 12, 2020

@jonathon_wodnicki So you mean even if we create a link in adobe campaign, it still won't create a Primary key - Foreign key in backend database?

I'm using Oracle as backend db.