0

さて、この問題に最適な設計を見つけようとしています。リード、クライアント、および契約を含むデータベースを作成しようとしています。私が考えているのは、リードとクライアント用に 2 つのテーブルが必要だということです。これらはうまくいけば同じエンティティですが。これに関する私の 2 番目の考えは、次のように見える client_status のような名前のテーブルを作成することです。

CREATE TABLE status(
  status_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  status_name VARCHAR(40) NOT NULL,
  PRIMARY KEY(status_id)
);
  INSERT INTO status (status_id, status_name) VALUES ( '1', 'Prospect');
  INSERT INTO status (status_id, status_name) VALUES ( '2', 'Client');

CREATE TABLE client(
  client_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  fname VARCHAR(40) NOT NULL,
  mname VARCHAR(40) NOT NULL,
  lname VARCHAR(40) NOT NULL,
  PRIMARY KEY(client_id)
);

CREATE TABLE client_status(
  status_id INTEGER UNSIGNED NOT NULL,
  client_id INTEGER UNSIGNED NOT NULL,
  FOREIGN KEY(status_id) REFERENCES status(status_id),
  FOREIGN KEY(client_id) REFERENCES clients(client_id)
);

これは目前の問題を処理する正しい方法でしょうか?

4

1 に答える 1

1

これはまさに私がこれを設定する方法です。これによりclient、複数のステータスを持つことができます。

私が持っている 1 つの提案は、両方の列としてテーブルに作成PRIMARY KEYすることです。client_status

于 2013-02-07T21:05:07.077 に答える