Как сохранить данные таблицы подкатегорий с различными значениями столбцов для каждой таблицы подкатегорий для продуктов?

Я новичок в проектировании баз данных. Я буду использовать 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 подкатегорий с некоторыми общими именами столбцов и некоторыми совершенно другими, например:

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

Теперь я объединяю все те же столбцы в одну таблицу с именем «Автомобиль» и создаю новую таблицу с именем «car» для хранения столбцов «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

Это означает, что нет необходимости создавать таблицу мотоциклов, а автомобиль и автобус будут храниться в одной таблице. Это правильно?
1. Мотоцикл — это транспортное средство
2. Автомобиль — Автомобиль
3. Автобус — это транспортное средство

Другой пример, как это для пользователей. У меня есть три типа пользователей: администратор, зарегистрированный и гость со следующей схемой:

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» и изменяю «user», «guest» и «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 является зарегистрированным пользователем

Это все, что я считаю решением для меня. Это хорошее решение? Не ухудшит ли это производительность? Стоит ли искать другое решение? Может ли кто-нибудь из вас направить меня в этом отношении?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …