2016-08-18 41 views
0

我有一个列表产品其中每个可以属于产品类别建模“多对一”关系时,如何处理不属于“一方”记录的“多”方记录?

我可以让两个表:

product(id, product_name, category_id); 
category(id, category_name); 

有些产品还没有定义的类别或者不属于任何定义的类别。我该如何处理?

我可以使空值为category_id,或者可以使空值为category_name,或者两者兼有。或者我可以创建一个“not_yet_assigned”值作为category_name的一部分。

有没有很好的解决方案呢?

+2

我会创建一个名为uncategorized的类别。 – Peter

+0

或只是允许NULL为category_id? – Naruto

+0

@Naruto,那是我的困境。我可以NULL'category_id',但然后...为什么不创建一个NULL类别,并保持'category_id'不可为空...然后我卡住 – Dennis

回答

1

使Product.Category_id nullable将强制使用outer joins查看您的所有产品与他们的Category.Category_Name,所以我会避免这一点,我会创建一个名为未分类或类似的类别。
或者也许一个未分类(这将是默认值)和一个其他对于那些不属于任何其他类别的产品。

0

基本上,我想回答你的问题在于要区分与否的两种情况之间的事实:

  1. 的产品属于杂项类别,或
  2. 该产品具有尚未分类。

如果区别是应用程序显著,比我的建议是建立一个类别“Miscellaneaous”(或类似),并指定其id为外键第一套产品,并留下空的产品仍然必须进行分类。

如果区别并不重要,您可以将类别留空或定义一个“空”类别,我认为这两种方法之间没有太大的区别。

相关问题