假设
(注意:上面的一些属性更好地反映为E/Rs,但这一点现在不在这里。)
我不知道如何在字符和类型之间建模这个E/R (我应该更改它的名称,因为已经有一个属性: Type )。
我考虑过单表继承,但发现它缺乏,因为看起来所有潜在类型之间的所有属性都存储在同一个表中,这似乎非常.笨重的。
发布于 2016-03-22 07:34:09
需要注意的一点是,不需要将所有数据存储在数据库中。
如果同一类型的字符共享相同的能力集,这些能力和类型数量是相当静态的(请不要频繁更改),您可以围绕一组普通的ruby类构建逻辑,其中包含访问它所需的所有数据和方法。
另一方面,您可能希望让没有适当编程知识的人添加新类。在这种情况下,您可以将所有信息保存为文件系统上的本地文件,例如"wod_vampire.chr“。它的内容可以是包含属性及其值的键值对的散列,也可以是具有特定顺序的元素的数组。
好的,所以我们考虑了所有的非数据库方式,他们并不适用于我们。假设您使用的是关系数据库,仍然有几个选项。
第一个是单一的表继承(您已经知道了)。所有可能的属性都将存储在一个表中,但是每个types只知道其中的一组属性并与之交互。
第二种方法是使用在一些现代数据库中实现的json数据类型(例如,Postgresql和Mysql)。这允许您存储散列,而不对其结构进行限制(换句话说,您可以根据需要拥有任意多个不同的属性)。请注意,您可能需要实现您自己的一组getters/setters方法来访问以这种方式存储的值。
https://stackoverflow.com/questions/36145799
复制相似问题