SQL Server Database Table Normalization ASP.NET MVC
<p>I have an ASP.NET MVC application and by default I have an <code>AspNetUsers</code> table that stores users. I actually have two types of users on my site, stored inside the same table, with both of their distinctive columns! Obviously I realize this is not the way to go and I am trying to normalize it. </p>

<p>Here is the table definition so far:</p>

<pre><code>CREATE TABLE [dbo].[AspNetUsers] 
(
    [Id]                   NVARCHAR (128)  NOT NULL,
    [Email]                NVARCHAR (256)  NOT NULL,
    [EmailConfirmed]       BIT             NOT NULL,
    [PasswordHash]         NVARCHAR (MAX)  NULL,
    [SecurityStamp]        NVARCHAR (MAX)  NULL,
    [PhoneNumber]          NVARCHAR (50)   NULL,
    [PhoneNumberConfirmed] BIT             NULL,
    [TwoFactorEnabled]     BIT             NOT NULL,
    [LockoutEndDateUtc]    DATETIME        NULL,
    [LockoutEnabled]       BIT             NOT NULL,
    [AccessFailedCount]    INT             NOT NULL,
    [FirstName]            NVARCHAR (50)   NULL,
    [LastName]             NVARCHAR (50)   NULL,
    [Role]                 NVARCHAR (50)   NOT NULL,
    [City]                 NVARCHAR (50)   NULL,
    [ZipCode]              NVARCHAR (50)   NULL,
    [Region]               NVARCHAR (50)   NULL,
    [Language]             NVARCHAR (50)   NULL,
    [University]           NVARCHAR (50)   NULL,
    [StudyProgramme]       NVARCHAR (50)   NULL,
    [Semester]             INT             NULL,
    [GraduationDate]       NVARCHAR (50)   NULL,
    [Description]          NVARCHAR (2000) NULL,
    [Skills]               NVARCHAR (2000) NULL,
    [Experience]           NVARCHAR (2000) NULL,
    [UserName]             NVARCHAR (50)   NOT NULL,
    [WorkField]            NVARCHAR (50)   NULL,
    [NrEmployees]          INT             NULL,
    [CompanyName]          NVARCHAR (50)   NULL,
    [Website]              NVARCHAR (50)   NULL,

    CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED ([Id] ASC)
);
GO

CREATE UNIQUE NONCLUSTERED INDEX [UserNameIndex]
    ON [dbo].[AspNetUsers]([Email] ASC);
</code></pre>

<p>I want to store the Student/Company user specific fields in a separate tables, however I am not sure how to go about doing this:</p>

<p>Student specific:</p>

<pre><code>    [FirstName]            NVARCHAR (50)   NULL,
    [LastName]             NVARCHAR (50)   NULL,
    [Language]             NVARCHAR (50)   NULL,
    [University]           NVARCHAR (50)   NULL,
    [StudyProgramme]       NVARCHAR (50)   NULL,
    [Semester]             INT             NULL,
    [GraduationDate]       NVARCHAR (50)   NULL,
    [Skills]               NVARCHAR (2000) NULL,
    [Experience]           NVARCHAR (2000) NULL,
</code></pre>

<p>Company specific:</p>

<pre><code>[WorkField]            NVARCHAR (50)   NULL,
[NrEmployees]          INT             NULL,
[CompanyName]          NVARCHAR (50)   NULL,
[Website]              NVARCHAR (50)   NULL,
</code></pre>

<p>I am not sure how to go about the normalization process. Do I just modify <code>AspNetUsers</code> table and create two new tables? What kind of constraints do I add to them? How do I make the relationship between them?</p>