さて、この問題に最適な設計を見つけようとしています。リード、クライアント、および契約を含むデータベースを作成しようとしています。私が考えているのは、リードとクライアント用に 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)
);
これは目前の問題を処理する正しい方法でしょうか?