Database-Design
一對多關係的查找表
我有一個
tickets
表id
,我需要將其關聯到一個查找表,其中該數據的對應項是另一個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;
您可能還想查看索引上的“填充因子”,具體取決於此處插入負載的重量。但這是一個值得自己探索的大話題……