If I understand correctly what you're trying to model, both are wrong.
As I understand it, you have three entities: Profiles, industries and languages. Profiles are related, many to many, to industries, with an relationship attribute of a duration (in years, if you will) this relationship has been established and analog (but separately!) for languages.
In your first model, you have to repeat the industry's (or language's) name and (maybe other attributes of industries (languages)) in every relation to them to a profile and you have the names (or other attributes) only there. That follows,
- if you want to change a name (or other attributes), say to correct a typo, you have to change it in all links to a profile, if you forget one (some), you'll have inconsistent data
- and if you delete the last link to an industry (language), the industry (language) would cease to exist in your database.
Your second model corrects that by having a table for the industries and the languages each. Your linking table points the right was but is flawed as it tries to somehow squeeze two relationships into one. To which of them the duration belongs? To the relation with an industry or with a language?
Having three entities you need three tables, one for each.
CREATE TABLE profile
(id serial,
name text,
-- other attributes
PRIMARY KEY (id));
CREATE TABLE industry
(id serial,
name text,
-- other attributes
PRIMARY KEY (id));
CREATE TABLE language
(id serial,
name text,
-- other attributes
PRIMARY KEY (id));
Then, as the profiles relate to industries and languages, which adds up to two relationships, you need two linking tables with a column for the duration each, to model the relationship attribute.
CREATE TABLE profile_industry
(profile integer,
industry integer,
duration integer, -- or you might even want to use the interval type to be extremely precise and flexible
-- other attributes
PRIMARY KEY (profile,
industry),
FOREIGN KEY (profile)
REFERENCES profile
(id),
FOREIGN KEY (industry)
REFERENCES industry
(id));
CREATE TABLE profile_language
(profile integer,
language integer,
duration integer, -- or you might even want to use the interval type to be extremely precise and flexible
-- other attributes
PRIMARY KEY (profile,
language),
FOREIGN KEY (profile)
REFERENCES profile
(id),
FOREIGN KEY (language)
REFERENCES language
(id));
Or instead of a duration you can also change or add an attribute to the relation with a language to something more menaingful, like an ACTFL proficiency level for example (best define and use an enum type for that).