我有一张桌子,例如,特定的服务提供商将在那里存储汽车商店。
汽车商店提供各种服务。

我的问题是如何在列中存储这些服务?
我可以创建第二个表,用于存储服务,但是如果我想提供搜索功能,则需要这样做-我的目的不是(至少现在不是)。

因此,我如何将所有服务存储在一行中(对应于特定的汽车商店,例如eaxmple)。如我所见,它将是VARCHAR类型。

此外,一个表中的主键可以引用另一个表中的主键是否可以?

我还需要做什么?

我还需要强调,在某些情况下,服务提供商可能会提供独特的服务-只有一个服务提供商提供特定的服务。

最佳答案

您可以建立多对多关系,

该表存储服务提供商的列表。

CREATE TABLE ServiceProvider
(
    ProviderID INT NOT NULL,
    ProviderName VARCHAR(50),
    .......,
    CONSTRAINT tb_pk PRIMARY KEY (ProviderID),
    CONSTRAINT tb_uq UNIQUE (ProviderName)
);

CREATE TABLE ServiceList
(
    ServiceID INT NOT NULL,
    ServiceName VARCHAR(50),
    .......,
    CONSTRAINT tba_pk PRIMARY KEY (ServiceID),
    CONSTRAINT tba_uq UNIQUE (ServiceName)
);


该表将服务提供商列表映射到他们提供的服务。

CREATE TABLE Provider_Service
(
    RecID INT,
    ProviderID INT NOT NULL,
    ServiceID INT NOT NULL,
    CONSTRAINT tbb_pk PRIMARY KEY (RecID),
    CONSTRAINT tbb_fk1 FOREIGN KEY (ProviderID)
          REFERENCES  ServiceProvider(ProviderID),
    CONSTRAINT tbb_fk2 FOREIGN KEY (ServiceID)
          REFERENCES  ServiceList(ServiceID),
    CONSTRAINT tba_uq UNIQUE (ServiceName, ProviderID)
);

关于mysql - db table scheme-做什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13138107/

10-10 01:56