我正在组建一个系统来跟踪客户订单。每个订单都有三个地址; a主要联系地址,账单地址和送货地址。我不希望在我的订单表中有三个地址的列,我想从一个单独的表中引用它们并有一些方法来枚举该条目,以便我可以确定该地址是主要的,运输的还是计费的。在AddressType的地址表中创建一个列并枚举它还是创建另一个表 - AddressTypes - 定义地址枚举和链接到该表是否有意义?
我找到了其他涉及这个主题的问题,这就是我采用我的模型的地方。我遇到的问题是将其纳入cakePHP约定。我一直在努力将BelongsTo关系形成的方向内化 - 文档的状态让我感觉倒退。
任何帮助将不胜感激,
谢谢!
答案 0 :(得分:1)
你是现货。您可以这样做,具体取决于您希望规范化数据库的程度。就个人而言,我会使用AddressType模型,这使您可以随意添加和删除地址类型。
如果您希望它更简单,那么我会在地址模型中使用ENUM()
字段。
答案 1 :(得分:1)
我更喜欢将hasOne,hasMany和hasAndBelongsToMany视为三种真实的关系类型。
belongsTo关系只是为了与前两个(hasOne / Many)所做的相反。
如果查看this diagram,您会注意到hasOne / belongsTo和hasMany / belongsTo的配对。
另请注意,“belongsTo”的模型是存储外键的模型(例如address_type_id
)。
因此,在您的情况下,由于AddressType具有多个地址(即您可以拥有许多家庭地址),因此地址属于地址类型(即每个地址需要address_type_id
)。
答案 2 :(得分:0)
表1:address_types(id,name,active)
表2:客户(id,name,active等)
表3:地址(id,address_type_id,customer_id,国家,城市,街道等)
这样客户可以拥有任意数量的地址。如果您需要添加新的地址类型,则不得更改客户或地址表。