数据库架构:多类型关系

时间:2015-08-30 22:02:28

标签: database laravel laravel-5.1

我正在构建一个具有“列表”的Laravel应用程序。这些列表可以是船,飞机和汽车;每个都有自己的特定领域。

我还将有一个与每种类型的列表相关的图像表和一个需要映射到每种类型列表的用户表。我正在尝试确定将每种商家信息类型映射回imagesusers的最佳方式。

我认为这样做的一种方法是使用单独的boatsplanesautomobiles表及其特定字段,然后具有特定的boat_images {{1} }和plane_images表映射到每个相应的类型。但是然后将每种类型与用户联系起来会有点棘手。

我不认为一个巨大的列表包含我通过这3个可能使用的所有字段(后面可能会增大)会有意义 - 而且我也不相信有一个通用的元数据字段有一个JSON对象,每个列表的规格都很好,或者当我想拥有一个可搜索的数据库时。

我知道pivot tables,但我正在尝试掌握整体架构。任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:2)

您可以拥有listings表格,仅包含idname。小船,飞机,汽车和其他应该是一个子集表。

每个表都有自己的实体。并且Listing实体与其子集表将具有多个hasMany关系。这些关系将命名为boats()planes()等。每个子集列表实体将保持一个belongsTo关系。

使用这些子表还应该有助于划分表单验证。

您可以拥有一个images表,并对列表表使用多态关系。这是一个巨大的救世主。