Каков оптимальный способ моделирования наследования в базе данных, содержащей в основном статические данные? - PullRequest
0 голосов
/ 13 января 2012

Я моделирую ролевую игру и мне нужно создать схему базы данных для оборудования.Данные будут в основном статическими.

В этой статье рассматриваются три способа моделирования наследования в базе данных: таблица для иерархии классов, таблица для подкласса и таблица для конкретного класса.Из трех, что бы вы порекомендовали?

Я сделал пример решения для кода на основе Entity Framework 4.2, чтобы посмотреть, что он изобрел, и использовал метод «Таблица на иерархию классов».

public class Gear {
    public int GearID { get; set; }
    public string Name { get; set; }
}

public class Armor : Gear {
    public int Kinetic { get; set; }
    public int Energy { get; set; }
}

public class Weapon : Gear {
    public int Damage { get; set; }
    public int Range { get; set; }
}

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Вы можете сделать пары имя-значение. Иметь таблицу Gear , которая имеет id , name , Attribute1Name и Attribute1Value . Имейте столько столбцов имя / значение, сколько вам нужно.

Так что если бы вы хранили Броню вещь Атрибут1 Имя было бы Кинетика , а Атрибут1 Значение было бы значением Кенет . Attribute2Name будет Energy и Attribute2Value будет значением Energy .

0 голосов
/ 13 января 2012

у всего есть компромисс. Вам нужно выбрать наиболее подходящий для вас подход. Недостатком иерархии вызовов является то, что в таблице должны быть все поля, которые есть в любых подклассах, что может означать, что некоторые строки в таблице занимают больше места, чем необходимо, потому что у них нет некоторых полей. Кроме того, вам нужен способ различать, какой тип класса гидратировать при загрузке строк.

С другой стороны, иерархия для каждого класса довольно проста для реализации. Другие стратегии становятся более привлекательными, чем больше расходятся данные между подклассами.

...