Наследование hibernate для выбора реализации дизайна онлайн-библиотеки / магазина
Я хочу реализовать онлайн-библиотеку в спящем режиме. Вот моя sql ссхема:
Между Книгой и Книгой Программирования я думаю об использовании hibernate-наследования таблиц типов для каждого подкласса. Я разработал схему sql таким образом, потому что не вижу смысла дублировать одни и те же столбцы в 10 таблицах. Может быть, мне нужно добавить еще один общий столбец, я не хочу делать это в 10 таблиц. Но это означает, что всякий раз, когда где-то нужна Книга, между всеми подтаблицами будет производиться огромное соединение (у меня только 2, но у меня может быть 50 типов книг!!!). То же самое применимо, если бы, например, у меня был бы интернет-магазин: у меня был бы продукт, телевизор, ноутбук, телефон и т. Д.).
Какой дизайн может помочь мне избежать этого поведения?
Мои мысли:
- Я мог бы дублировать все столбцы во всех подтаблицах и, таким образом, вообще не использовать наследование, относиться к ним как к различным сущностям. Единственное, что мне нужно - это связать каждую конкретную книгу с таблицами других таблиц (авторов и т. Д.).
- Я мог бы избежать использования наследования, сохранить текущую схему sql, но использовать однонаправленную ассоциацию (книга программирования имеет книгу и т. Д.)
Какой вариант вы, ребята, рекомендуете?
С уважением,
1 ответ
Исходя из опыта, при использовании наследования с Hibernate вы должны предпочесть точку зрения "Таблица на иерархию" с дискриминатором.
Вот тема, которая может помочь вам выбрать ответ: Как вы можете представить наследование в базе данных?