user232028
user232028

Reputation: 113

Relations between tables

I have 3 tables: A, B and C. Table A is in relation (n:1) with B and with C. Typically I store in A the B.Id (or the C.Id) and the table name.

e.g.

A.ParentId = 1
A.TableName = "B"

A.ParentId = 1
A.TableName = "C"

A.ParentId = 2
A.TableName = "B"

Is it a good solution? Are there any other solutions?

Upvotes: 0

Views: 159

Answers (2)

Rich
Rich

Reputation: 3123

Another possibility is to introduce another table Content (D) that serves as a "supertype" to Posts and Images. Then a row in Comments (A) would reference a primary key in Content as would each row in Posts (B) and Images (D). Any common fields in Posts and Images would be moved to Content (perhaps "title" or "date") and those original tables would then only contain information specific to a post or image (perhaps "body" or "resolution"). This would make it easier to perform joins than having the table names in a field, but it does mean that a real-world entity could be both a post and a comment (or indeed, be multiply a post or comment!). Really, though, it depends on the situation that you're trying to model.

Upvotes: 0

Sander Rijken
Sander Rijken

Reputation: 21615

Why not 2 parentid columns?

A.ParentIdB = 1
A.ParentIdC = 3

Upvotes: 1

Related Questions