php - 如何高效地存储多类别、多属性的数据?

标签 php mysql database database-design key-value

我们有许多类别的大量数据,具有许多属性,例如

category 1: Book

properties: BookID, BookName, BookType, BookAuthor, BookPrice

category 2: Fruit

properties: FruitID, FruitName, FruitShape, FruitColor, FruitPrice

我们有很多类别,例如书籍和水果。显然我们可以为它们创建许多表(例如 MySQL),每个类别一个表。但这将不得不创建太多的表,我们必须编写许多“适配器”来统一操作数据。

难点在于:

1) 每个类别都有不同的属性,这导致不同的数据结构。

2) 每个类别的属性可能需要随时更改。

3)如果每个类别一个表(表太多),很难操作数据

您如何存储此类数据?

最佳答案

您可以将数据库分为两部分:定义表和数据表。基本上,定义表用于解释存储实际数据的数据表(有人会说如果用 XML 表示定义表会更优雅)。

下面是基本思路。

定义表:

TABLE class  
class_id (int)  
class_name (varchar)

TABLE class_property  
property_id (int)  
class_id (int)  
property_name (varchar)  
property_type (varchar)  

数据表:

TABLE object  
object_id (int)  
class_id (varchar)  

TABLE object_property  
property_id (int)  
property_value (varchar) 

最好也能创建额外的Layer来解释结构,以便Data Layer更容易对数据进行操作。当然,您必须考虑性能、查询的便利性等。

只是我的两分钱,我希望它能有所帮助。

问候。

关于php - 如何高效地存储多类别、多属性的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399215/

相关文章:

MySQL触发器在插入之前更新整个表

java - org.hibernate.TypeMismatchException : Provided id of the wrong type

mysql - JOIN 的特定 MySQL 问题

sql - 如何在 SQL 中按连续的两行进行搜索?

php - 选择 SQL 中的问题

javascript - 只执行一次ajax

database - 在一次查询中按顺序对数据库树结构进行排序?

php - 跨网络服务器和多个移动设备同步数据库数据

javascript - 带有确认对话框的功能

php - 内容标签