0

特定のサービスプロバイダーがそこに保管されるテーブルがあります。たとえば、自動車店です。カーショップではさまざまなサービスを提供しています。

これらのサービスを列に保存する方法の私の問題は?サービスが格納されている2番目のテーブルを作成することもできますが、検索機能を提供したい場合はそれが必要になります。少なくとも今はそうするつもりはありません。

では、どのようにしてすべてのサービスを1つの行に格納するのでしょうか(これは、eaxmpleの特定の自動車ショップに対応します)。私が見ているように、それはVARCHARタイプになります。

さらに、テーブルの主キーが別のテーブルの主キーを参照しても問題ありませんか?

他に何をしなければならないのですか?

また、サービスプロバイダーが独自のサービスを提供している場合もあることを強調する必要があります。特定のサービスを提供しているのは1つのサービスプロバイダーだけです。

4

1 に答える 1

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)
);
于 2012-10-30T11:38:17.103 に答える