Database-Design

一對多關係的查找表

  • August 25, 2020

我有一個ticketsid,我需要將其關聯到一個查找表,其中該數據的對應項是另一個id由外部源控制的數據。

tickets
- id
- sutff

lookup
- outside_data_id
- ticket_id

我只需要知道關聯是否存在(因此是lookup表格)並且具有一對多的關係。outside_data_id我對除了它id本身和相關的東西一無所知ticket_id

另外我不想改變tickets表格,因為這只會影響少量的ticket_id’s.

例子

outside_data_id = 1234

可能與:

ticket_id = 321
ticket_id = 322
ticket_id = 900

下面的查找表結構會起作用還是有更好的方法?

CREATE TABLE lookup
(
  outside_data_id integer, 
  ticket_id integer
)

為此,您的表可以正常工作,但您可能想要添加索引。如果使用此表的主要原因是獲取 outside_ticket_id 並獲取相應的 ticket_id,我將添加以下聚集索引:

CREATE CLUSTERED INDEX [CL_Lookup_OD_ID] on [lookup](outside_data_id)
GO

如果主查找是相反的方式(嘗試從 ticket_id 中查找 outside_data_id),則將聚集索引放在另一列上。

—- 哦,對不起,剛剛注意到這是 Postgres。上面的語法是 SQL Server。對於 Postgres,在列上創建索引,然後發出 cluster 命令,如下所示:

CREATE INDEX IX_outside_data_id on lookup(outside_data_id);
CLUSTER lookup using IX_outside_data_id;

您可能還想查看索引上的“填充因子”,具體取決於此處插入負載的重量。但這是一個值得自己探索的大話題……

引用自:https://dba.stackexchange.com/questions/25291