当有更多列时,创建用户表的最佳方法是什么? MySQL的

时间:2015-08-27 12:47:40

标签: php mysql database join database-normalization

我正在使用php& amp;开发一个婚姻网站MySQL的。

我想在存储用户信息后执行以下过滤器和匹配操作:

Matches one user with other users with there : Age / Height , Religion, Mother Tongue, Community, Location, Education, Profession.

and filter by : Age / Height , Religion, Mother Tongue, Community, Location, Education, Profession, Marital Status,Country Living in,Profession Area,Profile Created by,Eating habits,Drinking habits.

我对'用户'表很困惑?我必须在我的数据库中存储有关用户的大量信息,如下所示

案例1:(仅存储在2个表中)

用户常见详情 - tbl_user

tbl_user(name, email, user_phone, user_gender, user_dob, user_religion, user_caste, user_living, user_password, profile_created_by)

用户额外信息 - tbl_user_ meta

包含用户:

1基本细节(婚姻状况*,母语,饮食习惯* ......),

2教育与培训职业细节(教育*,职业* ......),

3位置详情(国家*,州,城市,公民身份),

4个合作伙伴偏好(身高,饮食习惯*,饮酒习惯*,吸烟习惯* ......),

5关于用户(* about_you,msg ...)

计划将所有这些详细信息存储在下方的“ tbl_user_ meta ”表中:

tbl_user_ meta(user_meta_id,user_id,meta_key,meta_value )

案例2 :(存储在6个不同的表格中)

tbl_user(user_id,user_fname...user_verified )

basic_details(user_id, Eating Habits,..)

educ_career_details(user_id, Education , Occupation,..)

location _details(user_id, Country, State, city ,Citizenship)

partner_details(user_id,  Height, Eating_ Habits...)

about_details(user_id,  *about_you, msg…)

案例3:(仅存储在一个表中)

仅在添加所有列的情况下将所有详细信息存储在一个表“用户”中?

哪种CASE最适合在整个网站内轻松处理所有记录?或者还有其他一些最好的方法吗?

3 个答案:

答案 0 :(得分:1)

更好地使用 CASE 2 ,因为在婚姻网站中,您可能需要提供如此多的搜索。在educ_career _details表中,通过连接教育主表来存储教育细节。

答案 1 :(得分:0)

这是一个意见问题,可以有很多答案。如果您有总是需要的数据,而其中一些数据需要的频率较低,那么我将数据拆分为多个表格;保持主表中经常访问的数据和支持/元表中访问频率较低的数据。

答案 2 :(得分:0)

案例2更好,但在这种情况下你有几个错误。例如,使用用户信息,我将使用以下规范化:

person (idPerson, name,gender,religion,idUserProfile)
email (idEmail, email, idPerson)
phone (idPhone, phone, idPerson)
userProfile (idUserProfile, userProfile, password)

等等。 ¡请记住确保密码安全!