db table scheme - 做什么

时间:2012-10-30 11:32:33

标签: mysql

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

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

那么我如何将所有服务存储在一行中(对应于eaxmple的特定汽车商店)。它就像我看到的那样是VARCHAR类型。

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

我还需要做什么?

我还要强调,可能存在服务提供商提供的唯一服务的情况 - 只有一个服务提供商提供特定服务。

1 个答案:

答案 0 :(得分:1)

你可以有多对多的关系,

此表存储服务提供商列表。

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)
);