0

好的,所以我试图找出解决这个问题的最佳设计。我正在尝试创建一个数据库,其中包含潜在客户、客户和合同。我在想的是我应该为潜在客户和客户准备两张桌子。尽管这些希望是相同的实体。我对此的第二个想法是创建一个名为 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多个状态。

我的一个建议是PRIMARY KEYclient_status桌子上创建两列。

于 2013-02-07T21:05:07.077 回答