Я новичок в проектировании баз данных. Я буду использовать 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
Эта модель означает:
Это все, что я считаю решением для меня. Это хорошее решение? Не ухудшит ли это производительность? Стоит ли искать другое решение? Может ли кто-нибудь из вас направить меня в этом отношении?
Задача ещё не решена.
Других решений пока нет …