「信頼の連鎖」によって、地域課題の相談から解決までを導く社会実装モデル。
7/20 AM8:00 テーブルから作成してみる。
--
-- テーブルの構造 tcs_consultant_profiles
--
CREATE TABLE tcs_consultant_profiles (
id bigint UNSIGNED NOT NULL,
user_id bigint UNSIGNED NOT NULL,
municipality varchar(100) DEFAULT NULL,
affiliation_party varchar(100) DEFAULT NULL,
public_contact text,
term_start date DEFAULT NULL,
term_end date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--
-- テーブルの構造 tcs_consultation_assignments
--
CREATE TABLE tcs_consultation_assignments (
id bigint UNSIGNED NOT NULL,
consultation_entry_id bigint UNSIGNED NOT NULL,
consultant_id bigint UNSIGNED NOT NULL,
assigned_by bigint UNSIGNED DEFAULT NULL,
assigned_at timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--
-- テーブルの構造 tcs_consultation_entries
--
CREATE TABLE tcs_consultation_entries (
id bigint UNSIGNED NOT NULL,
counselee_id bigint UNSIGNED NOT NULL,
subject varchar(255) DEFAULT NULL,
description text,
status enum('pending','assigned','closed') DEFAULT 'pending',
created_at timestamp NULL DEFAULT NULL,
updated_at timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--
-- テーブルの構造 tcs_consultation_notes
--
CREATE TABLE tcs_consultation_notes (
id bigint UNSIGNED NOT NULL,
consultation_entry_id bigint UNSIGNED NOT NULL,
consultant_id bigint UNSIGNED NOT NULL,
summary text NOT NULL,
issues text,
needs text,
recorded_at timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--
-- テーブルの構造 tcs_roles
--
CREATE TABLE tcs_roles (
id bigint UNSIGNED NOT NULL,
name varchar(50) NOT NULL,
description text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--
-- テーブルの構造 tcs_specialist_assignments
--
CREATE TABLE tcs_specialist_assignments (
id bigint UNSIGNED NOT NULL,
consultation_entry_id bigint UNSIGNED NOT NULL,
specialist_id bigint UNSIGNED NOT NULL,
assigned_by bigint UNSIGNED DEFAULT NULL,
assigned_at timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE tcs_specialist_profiles (
id bigint UNSIGNED NOT NULL,
user_id bigint UNSIGNED NOT NULL,
specialty_area varchar(100) DEFAULT NULL,
license_type varchar(100) DEFAULT NULL,
office_name varchar(100) DEFAULT NULL,
contact_info text,
available_regions text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE tcs_trust_scores (
id bigint UNSIGNED NOT NULL,
specialist_id bigint UNSIGNED NOT NULL,
consultation_entry_id bigint UNSIGNED NOT NULL,
score int NOT NULL DEFAULT '1',
reason text,
recorded_by bigint UNSIGNED DEFAULT NULL,
recorded_at timestamp NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
CREATE TABLE tcs_users (
id bigint UNSIGNED NOT NULL,
name varchar(100) NOT NULL,
email varchar(255) NOT NULL,
password varchar(255) NOT NULL,
role_id bigint UNSIGNED NOT NULL,
created_at timestamp NULL DEFAULT NULL,
updated_at timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
ALTER TABLE tcs_consultant_profiles
ADD PRIMARY KEY (id),
ADD KEY user_id (user_id);
ALTER TABLE tcs_consultation_assignments
ADD PRIMARY KEY (id),
ADD KEY consultation_entry_id (consultation_entry_id),
ADD KEY consultant_id (consultant_id),
ADD KEY assigned_by (assigned_by);
--
tcs_consultation_entries
ALTER TABLE tcs_consultation_entries
ADD PRIMARY KEY (id
),
ADD KEY counselee_id
(counselee_id
);
--
tcs_consultation_notes
ALTER TABLE tcs_consultation_notes
ADD PRIMARY KEY (id
),
ADD KEY consultation_entry_id
(consultation_entry_id
),
ADD KEY consultant_id
(consultant_id
);
--
tcs_roles
ALTER TABLE tcs_roles
ADD PRIMARY KEY (id
);
--
tcs_specialist_assignments
ALTER TABLE tcs_specialist_assignments
ADD PRIMARY KEY (id
),
ADD KEY consultation_entry_id
(consultation_entry_id
),
ADD KEY specialist_id
(specialist_id
),
ADD KEY assigned_by
(assigned_by
);
--
tcs_specialist_profiles
ALTER TABLE tcs_specialist_profiles
ADD PRIMARY KEY (id
),
ADD KEY user_id
(user_id
);
--
tcs_trust_scores
ALTER TABLE tcs_trust_scores
ADD PRIMARY KEY (id
),
ADD KEY specialist_id
(specialist_id
),
ADD KEY consultation_entry_id
(consultation_entry_id
),
ADD KEY recorded_by
(recorded_by
);
--
tcs_users
ALTER TABLE tcs_users
ADD PRIMARY KEY (id
),
ADD UNIQUE KEY email
(email
);
--
--
tcs_consultant_profiles
ALTER TABLE tcs_consultant_profiles
MODIFY id
bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
tcs_consultation_assignments
ALTER TABLE tcs_consultation_assignments
MODIFY id
bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
tcs_consultation_entries
ALTER TABLE tcs_consultation_entries
MODIFY id
bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
tcs_consultation_notes
ALTER TABLE tcs_consultation_notes
MODIFY id
bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
tcs_roles
ALTER TABLE tcs_roles
MODIFY id
bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
tcs_specialist_assignments
ALTER TABLE tcs_specialist_assignments
MODIFY id
bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
tcs_specialist_profiles
ALTER TABLE tcs_specialist_profiles
MODIFY id
bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
tcs_trust_scores
ALTER TABLE tcs_trust_scores
MODIFY id
bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
tcs_users
ALTER TABLE tcs_users
MODIFY id
bigint UNSIGNED NOT NULL AUTO_INCREMENT;
--
--
tcs_consultant_profiles
ALTER TABLE tcs_consultant_profiles
ADD CONSTRAINT tcs_consultant_profiles_ibfk_1
FOREIGN KEY (user_id
) REFERENCES users
(id
) ON DELETE CASCADE;
--
tcs_consultation_assignments
ALTER TABLE tcs_consultation_assignments
ADD CONSTRAINT tcs_consultation_assignments_ibfk_1
FOREIGN KEY (consultation_entry_id
) REFERENCES tcs_consultation_entries
(id
) ON DELETE CASCADE,
ADD CONSTRAINT tcs_consultation_assignments_ibfk_2
FOREIGN KEY (consultant_id
) REFERENCES tcs_users
(id
),
ADD CONSTRAINT tcs_consultation_assignments_ibfk_3
FOREIGN KEY (assigned_by
) REFERENCES tcs_users
(id
);
--
tcs_consultation_entries
ALTER TABLE tcs_consultation_entries
ADD CONSTRAINT tcs_consultation_entries_ibfk_1
FOREIGN KEY (counselee_id
) REFERENCES tcs_users
(id
) ON DELETE CASCADE;
--
tcs_consultation_notes
ALTER TABLE tcs_consultation_notes
ADD CONSTRAINT tcs_consultation_notes_ibfk_1
FOREIGN KEY (consultation_entry_id
) REFERENCES tcs_consultation_entries
(id
) ON DELETE CASCADE,
ADD CONSTRAINT tcs_consultation_notes_ibfk_2
FOREIGN KEY (consultant_id
) REFERENCES tcs_users
(id
);
--
tcs_specialist_assignments
ALTER TABLE tcs_specialist_assignments
ADD CONSTRAINT tcs_specialist_assignments_ibfk_1
FOREIGN KEY (consultation_entry_id
) REFERENCES tcs_consultation_entries
(id
) ON DELETE CASCADE,
ADD CONSTRAINT tcs_specialist_assignments_ibfk_2
FOREIGN KEY (specialist_id
) REFERENCES tcs_users
(id
),
ADD CONSTRAINT tcs_specialist_assignments_ibfk_3
FOREIGN KEY (assigned_by
) REFERENCES tcs_users
(id
);
--
tcs_specialist_profiles
ALTER TABLE tcs_specialist_profiles
ADD CONSTRAINT tcs_specialist_profiles_ibfk_1
FOREIGN KEY (user_id
) REFERENCES users
(id
) ON DELETE CASCADE;
--
tcs_trust_scores
ALTER TABLE tcs_trust_scores
ADD CONSTRAINT tcs_trust_scores_ibfk_1
FOREIGN KEY (specialist_id
) REFERENCES tcs_users
(id
),
ADD CONSTRAINT tcs_trust_scores_ibfk_2
FOREIGN KEY (consultation_entry_id
) REFERENCES tcs_consultation_entries
(id
),
ADD CONSTRAINT tcs_trust_scores_ibfk_3
FOREIGN KEY (recorded_by
) REFERENCES tcs_users
(id
);
COMMIT;
ユーザとかロールなどは他のテーブルとぶつかるので、この際、このプロジェクト用のテーブルにはすべて接頭辞tcs_を付けました。
これでテーブルができたので、ざっと画面、コントローラをつくっていきます。
ここで朝風呂にはいり、さあ頭も心もすっきりとしたところで