[semi OT] mySQL question

Ken Ray kray at sonsothunder.com
Thu May 11 15:33:48 EDT 2023


I would recommend a table for People, a table for Companies, and a table for Employment that acts as a linking table between the first two. Something like (at its simplest):

people
====
id 			INT(11)
first_name	VARCHAR(255)
last_name		VARCHAR(255)


companies
=======
id			INT(11)
name		VARCHAR(255)


employment
========
id			INT(11)
person_id		INT(11)	
company_id	INT(11)
job_descrip	VARCHAR(255)


To get a list of everyone that worked at a particular company, you'd do:

	SELECT * FROM people
	INNER JOIN employment ON (people.id = employment.person_id)
	INNER JOIN companies ON (employment.company_id = companies.id)
	WHERE companies.name="XYZ, Inc."

To get a list of all companies where a person has worked, you'd do:

	SELECT * FROM companies
	INNER JOIN employment ON (companies.id = employment.company_id)
	INNER JOIN people ON (employment.person_id = people.id)
	WHERE people.first_name="John" AND people.last_name="Smith"

Make sure to index the 'id' and '_id' columns, and you can use the employment.job_descrip to hold info on the particular job an individual had at a specific company.

This is all off the top of my head, so it may need a little massaging, but you get the idea.


Ken Ray
Sons of Thunder Software, Inc.
Email: kray at sonsothunder.com
Website: https://www.sonsothunder.com


> On May 11, 2023, at 9:55 AM, jbv via use-livecode <use-livecode at lists.runrev.com> wrote:
> 
> Hi list,
> 
> This is a question for mySQL experts, which I am not.
> 
> I have a table of individuals.
> I have another table of companies.
> 
> Many individuals have worked in more than 1 company with
> different jobs descriptions.
> 
> I need to build my DB so that, with single requests, I
> can get a list of either :
> - all individuals who worked in a specific company with
> the job description of each one
> - all companies in which a specific individual has worked,
> along with the job description he had in each company.
> 
> The main problem is that the tables might become huge with
> the time (several Gb), so searching the tables might take
> forever if not carefully built.
> 
> I guess I will need to use a third table for the job descriptions
> and a combination of fulltext indexes and foreign keys
> might do the trick, but my limited skills don't allow me
> to find the best solution...
> 
> Any help will be much appreciated.
> Thank you in advance.
> 
> jbv
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode








More information about the use-livecode mailing list