【发布时间】:2019-08-25 06:09:33
【问题描述】:
我有一个名为 Listing 的 SQL 表,它代表已出租的房屋。该表有一个主键 id 和另一个名为 amenities 的字段,其中包含每个房子必须提供的东西。每个房子的设施用逗号分隔。例如TV, Internet, Bathroom。
我使用以下命令创建了一个名为 Amenity 的表格,其中包含提供的所有独特的不同便利设施以及每个便利设施的 SERIAL 号码。
CREATE TABLE Amenity AS(
SELECT DISTINCT regexp_split_to_table(amenities,',') FROM Listing
);
ALTER TABLE Amenity
RENAME regexp_split_to_table to amenity_name;
ALTER TABLE Amenity ADD COLUMN amenity_id SERIAL;
ALTER TABLE Amenity ADD PRIMARY KEY(amenity_id);
我的问题是我需要用外键连接这两个表,但我不知道如何连接,因为它们之间的关系是多对多关系。我已经检查了有关多对多关系中外键的其他问题,但找不到类似的东西。如果存在类似的东西,请解释它与我的问题相似的方式。
【问题讨论】:
-
不是一个好的设计。两个表之间的多对多关系应该通过一个额外的链接表来实现。请阅读数据规范化。
标签: sql database postgresql data-modeling