如何为Products的每个子类别表存储具有不同coloumns的子类别表的数据?

时间:2015-08-02 19:01:35

标签: php mysql database-design relational-database database-schema

我是数据库设计的新手。我将使用MySQL和PHP。我设计的数据库中有很多类别和子类别,如下所示:

Product Table
  p_id
  p_title
  category_id   F Key

Category_Table
  c_id
  c_name

Sub_category_Table
  sc_id
  sc_name
  c_id      F Key

现在,问题是,例如,我有8个类别和几乎超过60个子类别,其中有一些常见的coloumn名称和一些非常不同的类似:

Vehicle                           // a category
  Car                          // subcategory
      id,
      cat_id
      brand_id
      model
      price
      year
      insurance_validity_date
      fuel_type

  Motorcycle                          // subcategory
      id
      cat_id
      brand_id
      model
      price
      year

  Bus/Lorry                          // subcategory
      id
      cat_id
      brand_id
      model
      price
      year
      insurance_validity_date
      fuel_type

现在,我将所有相同的列合并到名为' Vehicle'并制作一个名为“汽车”的新表。存储' insurance_validity_date,fuel_type'像这样的摩托车专栏和没有桌​​子:

Vehicle (= Motorcycle)                           // a category
      id
      cat_id
      brand_id
      model
      price
      year

 Car/Bus                          // subcategory
      id
      insurance_validity_date
      fuel_type
      vehicle_id

这意味着无需创建摩托车表,而且Car和Bus将存储在一个表中。这样对吗?  摩托车是一种车辆  汽车是一种车辆  3.公共汽车是一种车辆

' vehicle_id'将确定记录是关于公共汽车还是汽车

这样的另一个例子是用户。我有三种类型的用户:admin,registered和guest,具有以下架构:

Person
  user
      id
      name
      user_name
      email
      contact_no
      password
      no_of_log_ins
      last_login_time
      registration_date
      city
      user_role_or_type_id

  business_owner
      id
      name
      user_name
      company_business_shop_name
      email
      contact_no
      address
      password
      no_of_log_ins
      last_login_time
      registration_date
      city
      user_role_or_type_id

   guest
      id
      name
      email
      contact_no
      city
      user_role_or_type_id

   admin
      id
      name
      email
      contact_no
      password
      no_of_logins
      last_login_time
      user_role_or_type_id

现在我将一个名为' Person'的表中的所有相同列合并。并修改用户'客户'和' admin',存储不常见的列,如下所示:

Person (= Guest)
      id
      name
      email
      contact_no
      city
      user_role_or_type_id

   guest
     id
     Person_id

   registered_user (or admin)
      id
      person_id
      user_name
      password
      no_of_logins
      last_login_time

          admin
             id
             registered_user_id

          user
             id                              
             registration_date
             registered_user_id

          business_owner
             id
             company_business_shop_name
             address
             registered_user_id

此模型表示:

  1. 嘉宾是个人
  2. 注册用户是个人 (i)用户是注册用户 (ii)business_owner是注册用户
  3. 这就是我认为的解决方案。这是一个好的解决方案吗?它不会降低性能吗?我应该寻找其他解决方案吗?你能不能指导我这方面的事情吗?

0 个答案:

没有答案