Your schema is the concrete, I would say 'perfect' example were minuteproject can show its strength.
There are 34 tables, primary keys on each but no foreign key.
There are 2 ways to enrich the model and to add 'virtual' foreign key when there are not existing:
In your case it is worth doing it by convention otherwise its a bit long to configure.
It is also possible to use conventions because by 'reverse-analysis' your model, I figure out that it follows some conventions regarding PK and relationships considered as FK:
So yes, the article regarding Liferay makes sense, there is a need to adapt the conventions for your model.
I will add those in the next delivery.
/*
All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License")
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
More information on minuteproject:
twitter @minuteproject
*/
/*
template reference :
- name : SQL.ResetAndCreateForeignKeys
- file name : SQL.ResetAndCreateForeignKeys.vm
- time : 2012/08/26 ap. J.-C. at 13:00:24 CEST
*/
CREATE SCHEMA IF NOT EXISTS `lcm` DEFAULT CHARACTER SET latin1;
USE `lcm` ;
ALTER TABLE app ADD CONSTRAINT app_1_FK FOREIGN KEY (idlegal_case) REFERENCES legal_case(idlegal_case);
ALTER TABLE app ADD CONSTRAINT app_2_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE app_client_org ADD CONSTRAINT app_client_org_1_FK FOREIGN KEY (idapp) REFERENCES app(idapp);
ALTER TABLE app_client_org ADD CONSTRAINT app_client_org_2_FK FOREIGN KEY (idclient) REFERENCES client(idclient);
ALTER TABLE app_client_org ADD CONSTRAINT app_client_org_3_FK FOREIGN KEY (idorg) REFERENCES org(idorg);
ALTER TABLE app_fu ADD CONSTRAINT app_fu_1_FK FOREIGN KEY (idapp) REFERENCES app(idapp);
ALTER TABLE app_fu ADD CONSTRAINT app_fu_2_FK FOREIGN KEY (idfollowup) REFERENCES followup(idfollowup);
ALTER TABLE author_app ADD CONSTRAINT author_app_1_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE author_app ADD CONSTRAINT author_app_2_FK FOREIGN KEY (idapp) REFERENCES app(idapp);
ALTER TABLE client_attachment ADD CONSTRAINT client_attachment_1_FK FOREIGN KEY (idclient) REFERENCES client(idclient);
ALTER TABLE client_attachment ADD CONSTRAINT client_attachment_2_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE client_org ADD CONSTRAINT client_org_1_FK FOREIGN KEY (idclient) REFERENCES client(idclient);
ALTER TABLE client_org ADD CONSTRAINT client_org_2_FK FOREIGN KEY (idorg) REFERENCES org(idorg);
ALTER TABLE expense ADD CONSTRAINT expense_1_FK FOREIGN KEY (idlegal_case) REFERENCES legal_case(idlegal_case);
ALTER TABLE expense ADD CONSTRAINT expense_2_FK FOREIGN KEY (idfollowup) REFERENCES followup(idfollowup);
ALTER TABLE expense ADD CONSTRAINT expense_3_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE expense_comment ADD CONSTRAINT expense_comment_1_FK FOREIGN KEY (idexpense) REFERENCES expense(idexpense);
ALTER TABLE expense_comment ADD CONSTRAINT expense_comment_2_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE filter ADD CONSTRAINT filter_1_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE filter_conds ADD CONSTRAINT filter_conds_1_FK FOREIGN KEY (idfilter) REFERENCES filter(idfilter);
ALTER TABLE filter_conds ADD CONSTRAINT filter_conds_2_FK FOREIGN KEY (idfield) REFERENCES fields(idfield);
ALTER TABLE followup ADD CONSTRAINT followup_1_FK FOREIGN KEY (idlegal_case) REFERENCES legal_case(idlegal_case);
ALTER TABLE followup ADD CONSTRAINT followup_2_FK FOREIGN KEY (idstage) REFERENCES stage(identry);
ALTER TABLE followup ADD CONSTRAINT followup_3_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE keyword_client ADD CONSTRAINT keyword_client_1_FK FOREIGN KEY (idkeyword) REFERENCES keyword(idkeyword);
ALTER TABLE keyword_client ADD CONSTRAINT keyword_client_2_FK FOREIGN KEY (idclient) REFERENCES client(idclient);
ALTER TABLE keyword_followup ADD CONSTRAINT keyword_followup_1_FK FOREIGN KEY (idkeyword) REFERENCES keyword(idkeyword);
ALTER TABLE keyword_followup ADD CONSTRAINT keyword_followup_2_FK FOREIGN KEY (idfollowup) REFERENCES followup(idfollowup);
ALTER TABLE keyword_legal_case ADD CONSTRAINT keyword_legal_case_1_FK FOREIGN KEY (idkeyword) REFERENCES keyword(idkeyword);
ALTER TABLE keyword_legal_case ADD CONSTRAINT keyword_legal_case_2_FK FOREIGN KEY (idlegal_case) REFERENCES legal_case(idlegal_case);
ALTER TABLE keyword_legal_case ADD CONSTRAINT keyword_legal_case_3_FK FOREIGN KEY (idstage) REFERENCES stage(identry);
ALTER TABLE keyword_org ADD CONSTRAINT keyword_org_1_FK FOREIGN KEY (idkeyword) REFERENCES keyword(idkeyword);
ALTER TABLE keyword_org ADD CONSTRAINT keyword_org_2_FK FOREIGN KEY (idorg) REFERENCES org(idorg);
ALTER TABLE legal_case ADD CONSTRAINT legal_case_1_FK FOREIGN KEY (idstage) REFERENCES stage(identry);
ALTER TABLE legal_case_attachment ADD CONSTRAINT legal_case_attachment_1_FK FOREIGN KEY (idlegal_case) REFERENCES legal_case(idlegal_case);
ALTER TABLE legal_case_attachment ADD CONSTRAINT legal_case_attachment_2_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE legal_case_author ADD CONSTRAINT legal_case_author_1_FK FOREIGN KEY (idlegal_case) REFERENCES legal_case(idlegal_case);
ALTER TABLE legal_case_author ADD CONSTRAINT legal_case_author_2_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE legal_case_client_org ADD CONSTRAINT legal_case_client_org_1_FK FOREIGN KEY (idlegal_case) REFERENCES legal_case(idlegal_case);
ALTER TABLE legal_case_client_org ADD CONSTRAINT legal_case_client_org_2_FK FOREIGN KEY (idclient) REFERENCES client(idclient);
ALTER TABLE legal_case_client_org ADD CONSTRAINT legal_case_client_org_3_FK FOREIGN KEY (idorg) REFERENCES org(idorg);
ALTER TABLE org_attachment ADD CONSTRAINT org_attachment_1_FK FOREIGN KEY (idorg) REFERENCES org(idorg);
ALTER TABLE org_attachment ADD CONSTRAINT org_attachment_2_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE rep_col ADD CONSTRAINT rep_col_1_FK FOREIGN KEY (idreport) REFERENCES report(idreport);
ALTER TABLE rep_col ADD CONSTRAINT rep_col_2_FK FOREIGN KEY (idfield) REFERENCES fields(idfield);
ALTER TABLE rep_filter ADD CONSTRAINT rep_filter_1_FK FOREIGN KEY (idfilter) REFERENCES filter(idfilter);
ALTER TABLE rep_filter ADD CONSTRAINT rep_filter_2_FK FOREIGN KEY (idreport) REFERENCES report(idreport);
ALTER TABLE rep_filter ADD CONSTRAINT rep_filter_3_FK FOREIGN KEY (idfield) REFERENCES fields(idfield);
ALTER TABLE rep_filters ADD CONSTRAINT rep_filters_1_FK FOREIGN KEY (idreport) REFERENCES report(idreport);
ALTER TABLE rep_filters ADD CONSTRAINT rep_filters_2_FK FOREIGN KEY (idfilter) REFERENCES filter(idfilter);
ALTER TABLE rep_line ADD CONSTRAINT rep_line_1_FK FOREIGN KEY (idreport) REFERENCES report(idreport);
ALTER TABLE rep_line ADD CONSTRAINT rep_line_2_FK FOREIGN KEY (idfield) REFERENCES fields(idfield);
ALTER TABLE report ADD CONSTRAINT report_1_FK FOREIGN KEY (idauthor) REFERENCES author(idauthor);
ALTER TABLE stage ADD CONSTRAINT stage_1_FK FOREIGN KEY (idlegal_case) REFERENCES legal_case(idlegal_case);
commit;
I run them against mysql without errors.
Florian.