这是被动地为实体分配类别的正确方法

时间:2016-02-08 08:10:49

标签: mysql object doctrine-orm symfony

我正在尝试设计一个可以被动地用于“被动”的数据库。识别(并可选地分配)对象适合的任何/所有类别。以下是我目前正在实施的方式,但之前没有这样做,我想看看是否有人更好地了解如何去做。我正在使用Symfony与MySQL和Doctrine。

1 /。定义对象的表:

元素表,其中包含动物可能拥有的功能。该表将随着时间的推移而发展 - 例如,当有动物的动物被添加时:

ID NAME   CRITERIA
1  Leg    0-100
2  Arm    0-2
3  Pouch  Boolean
4  Horn   0-2

Animal 表,提供有关数据库中每只动物的个人信息:

ID NAME      Gender Weight DOB
1  Gertrude  F      450    2010-01-01
2  Shiela    F      200    2008-01-01
3  Bruce     M      250    2012-01-01

Identity 表,用于指定将 Elements 分配给每个 Animal

ANIMALID  ELEMENTID COUNT DESCRIPTION
1         1         4     
1         4         0                       
2         1         2     
2         2         2     
2         3         True                    // Female kangaroo has a pouch
3         1         2     Strong hind legs
3         2         2     
3         3         False                   // Male kangaroo has no pouch

以上我很清楚。但是,我希望能够被动地识别/分配当前对象满足所需条件的类别。理想情况下,当用户填写表单以创建新的 Animal 时,他们将能够看到他们当前符合条件的列表,因为他们添加/删除元素< / kbd>(例如Cow,Mammal,Bovine,Quadruped)。

继续这个例子:

2 /。定义类别的表:

Class 表,用于定义类别的必需属性:

ID NAME           WEIGHTMIN WEIGHTMAX HEIGHTMIN HEIGHTMAX AgeMax
1  Adult Cow      220       1000      .         200       50
2  Kangaroo       .         100       .         .         .

Class_Feature 表,它还通过额外需要的一对多关联来定义 Class 的强制功能。注意:GROUPID标识所需要的功能组,SUBGROUPOF标识选项是否嵌套在额外的强制性要求下(例如,公牛/母牛有角):

CLASSID GROUPID SUBGROUPOF ELEMENTID  GENDER MIN   MAX
1       1       .          2          .      0     0        // A cow can't have any arms
1       2       1          4          M      1     2        // Male cows have horns 
1       2       1          4          F      0     0        // Female cow can not have horns
2       1       .          3          M      0     0 
2       1       .          3          F      1     1 

0 个答案:

没有答案