我正在制作一个电子商务网络应用程序。以下是我计划的事情。如何构建电子商务应用程序的数据库?
products
表只包含几列,id
,name
,code
,SKU_no
。meta_information_products
表中包含列即,id
,product_id
[products
表的外键],meta_title
,meta_keywords
,meta_description
。measurement_product
表中包含列即,id
,product_id
,width
,height
,weight
,length
- 而且同样相对于产品的其它表。
所以我的问题是:
- 我应当创造不同
Model
上述每个点和 然后创建products
和 相关表One-To-One
关系?或者,我应该只创建一个名为Product
的模型,并将所有字段声明在一个表product
中。 - 如果我为
Product
创建了不同的模型,应该为创建One-To-One
关系声明方法的名称,以及与Product
模型相同。
例如,请考虑以下几点:我已经创建了两个模型称为Product
和MetaInformationProduct
,我已经创建了两个表的关系。现在我该怎样name
以下方法:
class Product extends Model {
...
public function methodName() {
$this->belongsTo('App\Product');
}
...
}
而对于MetaInformationProduct
:
class MetaInformationProduct extends Model {
...
public function methodName() {
$this->hasOne('App\Product');
}
...
}
好的..感谢您的输入先生。但为了给您提供信息,还有许多其他与产品相关的信息需要加以考虑。我刚刚展示了这些数据。会有更多的数据来到,比如产品的一般信息,税收,运输信息等等。我想避免每个表格有12列以上。 –
我明白了,但一般的经验法则是,如果信息与产品具有“一对一”关系,则它属于“产品”表。如果关系不是“一对一”,就像关键字一样,并且我认为是“taxation”和“shipping_information”,那么您应该从这里创建一个可用的关系:http://laravel.com/。 docs/4.2/eloquent#relationship –
我会在这里做一个修改:''keyword_product'不需要'id' - 只需将两个外键合并为一个复合外键即可。如果您希望从别处引用此桥表,则只需要单独的主键。 – halfer