Best practices для Entity промежуточных таблицы many to many. Spring JPA
У меня есть класс читатель и класс книга а базе данных Библиотека. Я сейчас проектирую БД и параллельно для уже сформировавшихся таблиц приведенных к нормальному виду оформляю entity классы.
По моей логике у сущностей Читатель и Книга может быть довольно много различных взаимоотношений
1 - просроченные книги 2 - читатели должники 3 - книги на руках 4 - история книги
И так далее...
Я не хочу чтобы таблицы Читатель и Книга были перегружены. Более того, я не хочу чтобы они были как-то связаны между собою вообще. Хорошее ли решение создавать отдельную таблицу для каждого такого взаимоотношения?
Например, вот создание таблиц для реальных сущностей
CREATE TABLE reader
(
Id SERIAL PRIMARY KEY,
FirstName CHARACTER VARYING(30) NOT NULL,
LastName CHARACTER VARYING(30) NOT NULL,
created_on TIMESTAMP NOT NULL
);
CREATE TABLE book
(
Id SERIAL PRIMARY KEY,
Name CHARACTER VARYING(30) NOT NULL,
IsNew BOOLEAN NOT NULL,
CountEx INTEGER NOT NULL,
created_on TIMESTAMP NOT NULL
);
и мне нужно подготовить таблицу для хранения истории History. В History можно смотреть какой пользователь какого числа брал книгу, и когда вернул разумеется.
CREATE TABLE history
(
reader_id BIGINT NOT NULL,
book_id BIGINT NOT NULL,
name_nick_suname_user VARCHAR NOT NULL,
name_book VARCHAR NOT NULL,
time_issue TIMESTAMP,
time_return TIMESTAMP,
PRIMARY KEY (reader_id, book_id),
FOREIGN KEY (reader_id) REFERENCES reader (id),
FOREIGN KEY (book_id) REFERENCES book (id)
);
соотвественно Histoty ссылается на читателей и книги.
Соответсвенно мои вопросы - хорошая ли практика делать такие промежуточные таблицы и как это лучше mapping в JPA?
Я думаю создать отдельную entity history которая будет ссылаться на entity reader один ко многим ; и entity book так же один ко многим.