I have a problem that can be summarized as follow:

Assume that I am implementing an employee database. For each person depends on his position, different fields should be filled. So for example if the employee is a software engineer, I have the following columns:

```
Name
Family
Language
Technology
CanDevelopWeb 

```

And if the employee is a business manager I have the following columns:

```
Name
Family
FieldOfExpertise
MaximumContractValue
BonusRate

```

And if the employee is a salesperson then some other columns and so on.

How can I implement this in database schema?

One way that I thought is to have some related tables:

CoreTable:

```
Name
Family
Type

```

And if type is one then the employee is a software developer and hence the remaining information should be in table `SoftwareDeveloper`:

```
Language
Technology
CanDevelopWeb 

```

For business Managers I have another table with columns:

```
FieldOfExpertise
MaximumContractValue
BonusRate

```

The problem with this structure is that I am not sure how to make relationship between tables, as one table has relationship with several tables on one column.

How to enforce relational integrity?