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 так же один ко многим.


Ответы (0 шт):