我正在尝试为申请表创建一个数据库表,其中包含70-80个字段,即70-80个表列。
此表适用于多个客户,但在80个字段中,每个用户的近30个字段相同,剩下的将是每个用户的更改。
注意:每个客户都会有多个用户填写该申请表。
我虽然以两种方式创建表格。
第一个:
第一个表包含相同的字段[sno, firstname, lastname, ..]
- >适用于所有用户
第二个表包含4列[sno, field_name, value, users_id]
第二个:
第一个表将包含所有列而不管用户(这意味着我将在一个表中添加所有客户端列) 在第二个表中,我将维护user_id和与之关联的各列。
哪种方式最好,如果还有其他最佳方式,请告诉我。
所有客户的公共字段: 个人信息,家庭信息,教育细节等
还有一些其他细节会与每个客户不同
答案 0 :(得分:0)
处理此类设计的最佳方法是使用EAV概念。
EAV:实体属性值
你需要制作几张桌子:
users (id, create_date, status)
attributes(id, title, status) // it will contains all attributes like firstname, lastname, etc etc)
attribute_to_users (id, attribute_id, user_id, attribute_value) // it will contain attribute value with respect to attribute and user
例如:
attribute_to_users (1, 1, 1, Naveed)
attribute_to_users (1, 2, 1, Ramzan)
对于同一个用户,attributeId:1(firstname)值为Naveed,第二个attributeId为姓氏值为Ramzan
同样的Drupal和magento在做。