我是数据库设计的新手。我将使用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.公共汽车是一种车辆
这样的另一个例子是用户。我有三种类型的用户: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
此模型表示:
这就是我认为的解决方案。这是一个好的解决方案吗?它不会降低性能吗?我应该寻找其他解决方案吗?你能不能指导我这方面的事情吗?