Good way to restructure a table I have a number of tables in an existing database that i would like to migrate to a new database but with a little different structure.

For example if a current table has columns like below:

table1
id, a1, a2, a3, a4, b1, b2, b3, b4


And the new structure would be something like:

table1, table2 (new table)

table1 (patient names)
id, a1, a2, a3, a4, bfk

table2 (doctor names)
id, b1, b2, b3, b4


EDIT:

Adding hypothetical scenario of patients and doctors.

Lets say that the original table had 4 rows for 4 patients so
it would look like 

 row1   id, pat1fname, pat1lname, pat1address...., doc1fname, doc1lname,....
 row2   id, pat2fname, pat2lname, pat2address...., doc2fname, doc2lname,....
 row3   id, pat3fname, pat3lname, pat3address...., doc1fname, doc1lname,....
 row4   id, pat4fname, pat4lname, pat4address...., doc1fname, doc1lname,....


Lets say that we only have two doctors and we want to put them in their own table 'Doctors'

so the tables would look like this

Original table structure
     row1   id, pat1fname, pat1lname, pat1address...., doc1fname, doc1lname,.... 
     row2   id, pat2fname, pat2lname, pat2address...., doc2fname, doc2lname,....
     row3   id, pat3fname, pat3lname, pat3address...., doc1fname, doc1lname,....
     row4   id, pat4fname, pat4lname, pat4address...., doc1fname, doc1lname,....


New table structure
'Patients' table
    row1    id, pat1fname, pat1lname, pat1address, 1, ....,
    row2    id, pat2fname, pat2lname, pat2address, 2, ....,
    row3    id, pat3fname, pat3lname, pat3address, 1, ....,
    row4   id, pat4fname, pat4lname, pat4address, 1, ....,
'Doctors' table
    row1    1, doc1fname, doc1lname,....
    row2    2, doc2fname, doc2lname,....


What would be a good way of linking these two new tables and converting each row from one-table-structure above to the two-table-structure i mentioned.
Methods of Linking:
1. Logically just left join doctors table and get doctor ID during patients data insert as showed below
2. Physically add foreign key constraint and during insert left join doctors table and get doctor ID during patients data insert    

 /* Supposed your OriginalTable is with following structure */

    create table #OriginalTable
    (
    ID int,
    patfname varchar(100),
    patlname varchar(100),
    pataddress1 varchar(100),
    pataddress2 varchar(100), 
    patcity varchar(40),
    patstate varchar(4),
    Patzipcode varchar(20),
    Docfname varchar(100),
    Doclname varchar(100),
    Docaddress1 varchar(100),
    Docaddress2 varchar(100), 
    Doccity varchar(40),
    Docstate varchar(4),
    Doczipcode varchar(20),
    DocNPI varchar(40)
    )

    /*Dumpy data insert*/
    insert into #OriginalTable
    select '1', 'pat1fname','pat1lname','pat1address1','pat1address2','Pat1City','p1S','pt1zip'
    ,'doc1firstname','doc1lastname','doc1address1' ,'doc1address2' ,'doc1City','d1S','dt1zip','000001'
    union all
    select '2', 'pat2fname','pat2lname','pat2address2','pat2address2','Pat2City','p2S','pt2zip'
    ,'doc2firstname','doc2lastname','doc2address1' ,'doc2address2' ,'doc2City','d2S','dt2zip','000002'
    union all
    select '3', 'pat3fname','pat3lname','pat3address3','pat3address2','Pat3City','p3S','pt3zip'
    ,'doc1firstname','doc1lastname','doc1address1' ,'doc1address2' ,'doc1City','d1S','dt1zip','000001'
    union all
    select '4', 'pat4fname','pat4lname','pat4address4','pat4address2','Pat4City','p4S','pt4zip'
    ,'doc1firstname','doc1lastname','doc1address1' ,'doc1address2' ,'doc1City','d1S','dt1zip','000001'


    /* create patients table with all required fields*/    
    create table Patients
    (
    ID int identity(1,1),
    FirstName Varchar(100),
    LastName Varchar(100),
    Adress1 Varchar(100),
    Adress2 Varchar(100),
    City Varchar(50),
    [State] Varchar(4),
    ZipCode varchar(20),
    DoctorID Int
    )    

    /* create Doctors table with all required fields*/
    create table Doctors
    (
    ID int identity(1,1),
    FirstName Varchar(100),
    LastName Varchar(100),
    Address1 Varchar(100),
    Address2 Varchar(100),
    City Varchar(50),
    [State] Varchar(4),
    ZipCode varchar(20),
    NPI varchar(40)
    ) 

    /*Remove existing data from patients and doctors table*/
    delete from Doctors
    delete from patients


    /* insert all distinct doctors data from Orginal table */
    insert into Doctors( FirstName ,LastName ,Address1 ,Address2 ,City ,[State] ,ZipCode ,NPI )
    select distinct docfname,doclname,docAddress1,docAddress2, docCity, docState, docZipcode, docNPI
    from #OriginalTable


    /* Set Identity insert On to add OLD unique ID values as they are in #OriginalTable */

    SET IDENTITY_INSERT Patients ON

    insert into  Patients( ID , FirstName ,LastName ,Adress1 ,Adress2 ,City ,[State] ,ZipCode ,DoctorID )
    select old.ID ,old.patfname ,old.patlname ,old.pataddress1 ,old.pataddress2 ,old.patcity ,old.patstate ,old.Patzipcode ,doc.ID
    from #OriginalTable old left outer join Doctors doc
    on old.Docfname=doc.FirstName
    and old.Doclname=doc.LastName
    and old.Docaddress1=doc.Address1
    and old.Docaddress2=doc.Address2
    and old.Doccity=doc.City
    and old.Docstate=doc.[State]
    and old.Doczipcode=doc.ZipCode
    and old.DocNPI=doc.NPI

    /*Set Identity insert off */
    SET IDENTITY_INSERT Patients OFF




    /* Query table to verify inserted data*/
    select * from #OriginalTable
    select * from Patients
    select * from Doctors


    DROP Table #OriginalTable