Можно было бы сделать это очень просто:
Table: animal (id, name, etc.)
отл.
animal (1, horse, etc.)
Когда вам нужно несколько таблиц, это будет, когда у вас есть несколько атрибутов
Table: animal (id, name, movement_type, diet_type)
Table: movement_type (id, type)
Table: diet_type (id, type)
ex.
movement_type (1, Quadruped)
movement_type (2, Biped)
diet_type (1, Herbivore)
diet_type (2, Omnivore)
animal (1, Horse, 1, 1)
animal (2, Human, 2, 2)
Хорошо строить таблицы для повторяющихся данных.С этим типом структуры ваши данные остаются гораздо более точными.
Кроме того, чтобы сделать шаг в ООП, вам понадобится один класс для осла и лошади с двумя отдельными экземплярами класса.
ех.
Animal horse = new Equidae("Seabiscuit", "tranquil", "sport");
Animal donkey = new Equidae("Fred", "ambitious", "work");
Необходим другой класс, если два объекта будут иметь разное поведение.Осел и лошадь являются частью семейства Equidae, и их поведение одинаково.Свойства, из которых они состоят, разные, но поведение одинаковое.
С другой стороны, самое важное, что ваша программа работает, а база данных хранит данные.Это обычные практики, но «есть миллион способов убрать золотую рыбку».
Надеюсь, это поможет ответить на ваш вопрос.