sql - 将来自不同来源的酒店设施映射到统一格式以删除重复项的数据库架构

标签 sql django database postgresql database-design

我正在创建一个酒店应用程序,它从不同的来源获取酒店提要并将其存储到数据库以形成统一的结构并将 API 公开给移动应用程序。我正在使用 python/django 应用程序从 3 个不同的来源获取酒店。

现在每个酒店来源都有不同的便利设施,例如:

Source 1 [Expedia]
    - Free WiFi
    - Hairdryer In Room
    - Cable TV
    - Double Bed
    - Single Bed
    - Fireplace

Source 2 [SomeHotelProvider]
    - WiFi
    - Hairdryer
    - Television
    - and so on

例如,这里我们有相同的设施名称但名称不同(免费 WiFi 和 WiFi)。唯一的问题是在 Mobile 屏幕上它会显示两个过滤器 [Free WiFi, Wifi] 来过滤掉结果集。那么处理这些重复值的最佳方法是什么。

需要一个解决方案来创建映射表,将所有重复项映射到一个设施主表。

提前致谢。

最佳答案

我会使用 JSONB 列,这样您就可以接受任何类型的数据。以哈希格式。然后你将不得不找到重复的键并合并它们。

https://www.postgresql.org/docs/9.4/static/datatype-json.html

然后您将必须检查并合并重复的 key (wifi、免费 wifi 等)。不幸的是,这不能以编程方式完成,因为即使您编写了一个完美的程序来执行此操作,将来可能会有一种您没有考虑到的新形式,例如“包含的 Wifi”。

关于sql - 将来自不同来源的酒店设施映射到统一格式以删除重复项的数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52927719/

相关文章:

c# - 将对象保存到数据库?

python - pytables支持NULL吗?

database - NoSql DB 和 OO Db 有什么区别?

sql - 如何将 BACPAC 文件上传到 Azure 中的 Blob

mysql - 有没有一种快速的方法来更新 SQL 中的许多记录?

python - 如何在 Django 中为 Chatterbot 指定自定义语料库路径?

Django 键盘中断

mysql - SQL 仅选择列上具有最大值的行

sql - 如何将今天的日期返回到 Oracle 中的变量

python - 如何在 Django 中创建一对一关系反向的记录?