I have two models :
Card with has_many relation to Works
I mean i have 7 static works in my database and i can choose some of them when i create a Card.
I defined a has_many relationship like this :

My problem is strange… it seems to work, but when i explore my sqlite file, i don’t see any table relationship between Card and Work.
I am expecting a table with card_id and work_id.
How core data store has many relationship?
Firstly, I’d caution you from opening up the sqlite files Core Data spits out and trying to infer things from them. It’s meant to be an opaque format: you’re only supposed to interact with Core Data persistent stores through the Core Data APIs.
However, to answer your question: in general in database design, you wouldn’t use a linking table like you describe for a one-to-many relationship, only for a many-to-many. For a one-to-many, you’d have a foreign key field in the table at the ‘one’ end, and have the contents of that field be the primary key of another table. For example (sorry for the random example I found on Google):
tblOrderis in a one-to-many relationship withtblOrderDetails. This is implemented by having anOrder#field in the to-many side of the relationship, which is a foreign key referring to the primary key of thetblOrdertable. As you can see, no linking table is needed.A many-to-many relationship would need a linking table, but a one-to-many does not.
One final point: I note in your screenshot that you don’t have an inverse relationship set up for your
worksorcustomerrelationships. Core Data requires all relationships to have an inverse, otherwise your data may become corrupted. (That’s somewhat a simplification, since there are other ways to work around it, but in general making inverses is easiest.)