首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪种方法更好地实现web应用程序中的自定义字段?

问哪种方法更好地实现web应用程序中的自定义字段?
EN

Stack Overflow用户
提问于 2016-03-29 14:07:19
回答 1查看 646关注 0票数 3

我有一个自制的PHP和MySQL的web应用程序。使用my system的许多不同客户端都希望使用自定义字段来增强实体。每个客户端都希望存储自己的附加数据,因此这应该以动态的方式完成。

例如,client1希望向他们的产品添加"safety_level“属性,client2希望为他们的产品添加一个名为”safety_level“的字段。

我想要一种不仅适用于产品,而且适用于用户和任何其他实体的方法。

这里有两个我找到的最优方案,但不能决定哪一个是最有效的:

选项1:为每个实体创建一个表,将附加字段值存储在1:1中。

代码语言:javascript
复制
+---------------------------------------------+
|products_custom_fields                       |
+---------------------------------------------+
|product_id (PK and FK related to products.id)|
|safety_level                                 |
|some_other_fields                            |
+---------------------------------------------+

pro:这个表不能拥有比实体表更多的记录(在本例中是产品),这意味着记录更少,而且很容易概览。

con:添加新字段或删除旧字段的需要DDL查询。我不想向users...not吐露DDL,即使是具有管理权限的操作符。

选项2: [entity]_custom_field_values将具有与[entity]表的N:1关系。每行包含自定义字段的类型和值本身。在这种情况下,我们需要另一个包含自定义字段类型的表。例如:

自定义字段值:

代码语言:javascript
复制
+----------------------------------------------------------------------+
|products_custom_field_values                                          |
+----------------------------------------------------------------------+
|custom_field_id                                                       |
|custom_field_type (FK product_custom_field_types.custom_field_type_id)|
|value                                                                 |
+----------------------------------------------------------------------+

自定义字段类型:

代码语言:javascript
复制
+---------------------------------------------------------+
|products_custom_field_types                              |
+---------------------------------------------------------+
|custom_field_type_id (PK AUTO_INCREMENT)                 |
|product_id (FK related to products.id)                   |
+---------------------------------------------------------+

pro:管理字段很简单,不需要更改表结构。

con:更多的记录,在一个大的mess...which中所有类型的自定义字段值都不是必要的错误,因为这是MySQL的要点,以从一个大混乱中提取有用的数据。问题是效率和绩效如何?

EN

回答 1

Stack Overflow用户

发布于 2016-03-29 14:14:13

如果它是一个公司项目,遵循以前项目的标准。

看看匈牙利符号之类的惯例,这比重复前缀更有意义。而且,更有可能的是,您的模型名是您的表名。

另外,如果您计划使用ORM,它们也可能有一些最佳实践。

符号表示法

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36286759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档