If I understand correctly, you have two tables like:
Book_A Book_B
------ ------
ISBN# ISBN#
Title Title
Which contain exactly the same information. This is a violation of the project-join normal form, which (paraphrased) says to eliminate tables or columns which can be replaced with a query. SELECT * FROM Book_A
will give the exact same information as Book_B
, and therefore Book_B
can be eliminated (or Book_A
for that matter, but only one of them!).
If the tables had additional columns, then you would still have a violation. E.g.
Book_C Book_D
------ ------
ISBN# ISBN#
Title Title
Year Author
Now we can't eliminate a whole table, but we can still eliminate one of the duplicate columns, so we get (for example):
Book_C Book_E
------ ------
ISBN# ISBN#
Title Author
Year
Because the information in Book_D
can be recreated by a join of Book_C
and Book_E
.
This schema is in 3NF, but it is in non-optimal 3NF because the same information could be expressed in fewer tables. An optimal 3NF would be:
Book
------
ISBN#
Title
Author
Year
In case some rows are removed in one of the tables, we need to preserve the information about which rows are present, even if we remove the duplicate title. E.g. if we have:
Book_A Book_B
------ ------
ISBN# ISBN#
Title Title
Where title is the same for a given ISBN, but Book_B
is a subset of the rows in Book_A
. Then we can eliminate the title, but not the key, like this:
Book_A Book_B
------ ------
ISBN# ISBN#
Title