我正在建立一个评估地点的铁路网站。
每个地方都属于一个类别。每个类别都有许多功能。因此,一个地方只能属于一个类别,但可以选择其中的许多功能。如果一个地方属于类别1,那么它只能拥有类别1的(1个或多个)特征而不是其他任何东西。 每个地方都有年龄组。
实现这一目标的轨道方法是什么?
我正在使用SQLite for dev&将使用postgres(在Heroku上)进行制作。
这是我想到的表格结构(表格及其列):
放置表格
INTEGER id
STRING name
INTEGER category_id
STRING address
FLOAT rating
类别表:
INTEGER id
STRING name
功能表(表单将显示通过查询此表选择的每个类别的功能)
INTEGER id
STRING name
INTEGER category_id
AgeGroup表:(一个地方可以选择多个年龄段)
INTEGER id
INTEGER place_id
BOOLEAN zero_to_three
BOOLEAN four_to_eight
BOOLEAN nine_to_twelve
BOOLEAN thirteen_above
PlacesFeatures表:
INTEGER id
INTEGER place_id
INTEGER category_id
BOOLEAN feature_1
BOOLEAN feature_2
...
BOOLEAN feature_n
关系:
Place
belongs_to :category
has_many :age_groups
Category
has_many :places
has_many :features
AgeGroup
belongs_to :place
Place条目将通过表单提交创建。
谢谢。
答案 0 :(得分:1)
你应该在Places表中使用年龄组的布尔标志,或者像这样单独使用PlacesAgeGroups表:
PlacesAgeGroups表:
INTEGER id
INTEGER place_id
INTEGER age_group_id
AgeGroups表:
INTEGER id
INTEGER description
同样,PlacesFeatues应该引用特征,每条记录一个特征。
PlacesFeatures表:
INTEGER id
INTEGER place_id
INTEGER category_id # (this is optional, as it's already set in Places table)
INTEGER feature_id