我有这种情况,我需要有关数据库表设计的建议。
背景
我正在用 PHP 开发一个应用程序(准确地说是 cakephp)。我们上传一个 xml 文件,它会解析文件并将数据保存在数据库中。这些 XML 可以是文件或 url 提要,这些是从各种供应商处购买的数据。它旨在从源 url 收集各种场所数据,场所可以是酒店、电影院、学校、餐馆等。
问题
这些场地的初始表格结构如下。表最初设计用于存储通用信息。
id
Address
Postcode
Lat
Long
SourceURL
Source
Type
Phone
Email
Website
随着来自不同来源的数据越来越多,我意识到不同类型的场地有很多属性。
例如,酒店可以具有一些属性,例如
price_for_one_day, types_of_accommodation, Number_of_rooms etc
因为学校没有它们,但有不同的属性集。餐厅将有一些其他属性。
我的第一个想法是创建两个名为 vanue_attribute_names 的表,Venue_attributes
##table venue_attribute_names
_____________________________
id
name
##table venue_attributes
________________________
id
venue_id
venue_attribute_name_id
value
因此,如果我检测到任何新属性,我想在属性表中创建一个具有关系的属性及其值。但我怀疑这不是正确的方法。我相信还有其他方法可以解决这个问题吗?此外,如果表变大,由于连接和 sql 查询的增加,可能会出现性能问题
创建具有所有可能属性的最广泛的表作为列是正确的方法吗?请告诉我。如果有任何我可以参考的链接,我可以关注它。谢谢