希望有人能通过示例或建议的阅读来解决这个问题。我想知道在建模表格时,如何最好地设计它们的类层次等效性。以下是一个示例:
abstract class Card{
private $_name = '';
private $_text = '';
}
class MtgCard extends Card{
private $_manaCost = '';
private $_power = 0;
private $_toughness = 0;
private $_loyalty = 0;
}
class PokemonCard extends Card{
private $_energyType = '';
private $_hp = 0;
private $_retreatCost = 0;
}
现在,当建立与这个类层次结构同步的表格模型时,我选择了非常相似的方法:
TABLE Card
id INT, AUTO_INCREMENT, PK
name VARCHAR(255)
text TEXT
TABLE MtgCard
id INT, AUTO_INCREMENT, PK
card_id INT, FK(card.id)
manacost VARCHAR(32)
power INT
toughness INT
loyalty INT
TABLE PokemonCard
id INT, AUTO_INCREMENT, PK
card_id INT, FK(card.id)
hp INT
energytype ENUM(...)
retreatcost INT
我遇到的问题是如何将每个
Card
记录与包含其详细信息的相应表中的记录关联起来。具体来说,我应该查找哪个表格。我应该向
Card
添加一个VARCHAR
列以保存相关表的名称吗?这是我和同事们想到的唯一解决方案,但它似乎太“肮脏”了。保持设计可扩展性很重要,允许轻松添加新的子类。如果有人能提供一个示例或资源,展示一种干净的方式来反映类/表层次结构,那就太好了。