问题
Is it bad to have two tables with the same attributes but with different meanings and relationships?
I.e. table1
's attributes = table2
's attributes.
However table1
has a relationship with table3
and
table2
has a relationship with table4
.
Is this considered bad practice? Or should table1
and table2
be collated into one table?
Although if it were to be collated into one table wouldn't it follow that table1
would also have a relationship with table4
?
回答1:
It is ok to have tables with the same attributes. Just find sufficient meanings/predicates to record your application state.
A base table has a "meaning" or "predicate (expression)" that is a fill-in-the-(named-)blanks statement given by the DBA. The names of the blanks of the statement are the columns of the table. Rows that fill in the blanks to make a true proposition about the world go in the table. Rows that fill in the blanks to make a false proposition about the world are left out. Ie a table holds the rows that satisfy its statement. You cannot set a base table to a certain value without knowing its statement, observing the world and putting the appropriate rows into the table. You cannot know about the world from base tables except by knowing its statement and taking present-row propositions to be true and absent-row propositions to be false. Ie you need its statement to use the database.
And just declare the relationships/FKs as appropriate. The R in ER is for relationship meaning association (among entities). However many self-styled "ER" methods and products use "relationship" for foreign key (FK) instead. A FK from some roles/columns in one association set/table to some in another just means that every entity/subrow for those roles/columns in the source must appear in the corresponding roles/columns of the target as a key. When that is so, declare the relationship/FK.
A constraint expression just corresponds to a proposition aka always-true statement about the world and simultaneusly to one about base tables.
(From this answer. See this answer re attributes/headings, this one re predicates and this one re relationships/FKs/links.)
来源:https://stackoverflow.com/questions/33066601/are-tables-with-the-same-attributes-but-different-relationships-bad-practice