Я планирую / проектирую свою базу данных для моего текущего проекта (Java). Для этого проекта я собираюсь использовать Hibernate.
В моем проекте у меня есть базовый класс / интерфейс под названием Command. Фактически класс Command содержит только идентификатор поля (уникальный).
public interface Command {
public int getId();
public void execute();
}
Итак, у каждого общего подкласса Command есть уникальный идентификатор и метод execute, который реализуется подклассами.
Существует много подклассов, таких как MoveCommand, ResizeCommand и т. Д., Которые не имеют общих полей данных (кроме идентификатора).
Например:
public class MoveCommand implements Command {
private int id;
private int oldX;
private int oldY;
private int newX;
private int newY;
public void execute() { ... }
public int getId(){return id; }
}
public class ResizeCommand implements Command {
private int id;
private int oldWidth;
private int oldHeight;
private int newWidth;
private int newHeight;
public int getId(){return id; }
public void execute() { ... }
}
Затем у меня есть другой класс, который называется Document, который содержит список команд
public class Document {
private List<Command> commands;
}
Таким образом, многие запросы базового класса «выберите из команды» были выполнены во время выполнения.
Мой вопрос:
Какую стратегию наследования я должен использовать в этом случае, чтобы добиться максимальной производительности.
В SQL: лучше ли в этом случае JOIN (таблица на подкласс) или UNION (таблица на конкретный класс)?
Кто-нибудь имеет опыт работы с этой темой?
Я думаю, что таблица для каждого подкласса была бы лучшим (проектным) решением, но я не уверен в этом, поскольку существовала бы таблица базы данных с одним столбцом (id), потому что это единственное, что команды имеют в общий.