Looks to me like you should have 3 tables.
Code:
Driver
--------
DriverNo
Name
Address
Code:
Car
---------
CarNo
Make
Model
Year
Code:
CarDriver
----------
CarNo
DriverNo
The primary key for the Driver table should be DriverNo.
The primary key for the Car table should be CarNo.
The primary key for the CarDriver table should be CarNo,DriverNo (this means it is a composite key because it contains multiple columns). You should also create foreign key relationships between CarDriver.CarNo and Car.CarNo and between CarDriver.DriverNo and Driver.DriverNo
By creating the foreign keys, you are effectively preventing data in the CarDriver table from containing data that does not appear in the other tables. Basically, if you have 3 cars in your system numbered 1, 2, and 3 then you will not be able to add a row to the CarDriver table with CarNo = 7 because SQL Server will give you a foreign key constraint error.
This will prevent your data from getting corrupt.
There is a minor "problem" that you need to be made aware of. When you have a foreign key, you cannot delete data from the base table if that data exists in the related table. For example, suppose you have cars 1, 2, and 3. You decide to sell car 2 and delete it from your table. If there are any rows in CarDriver with CarNo = 2 and you do "Delete From Car Where CarNo = 2" then you will get an error. You must first delete the rows from the CarDriver table and then delete the rows from the car table.
Of course, there are also ways to automate this process. You could cascade delete or even use a trigger. I think it might be better to delay discussions regarding these options until you understand the rest of what I have said here.
Hope this helps.
-George
Microsoft SQL Server MVP
My Blogs
SQLCop
twitter
"The great things about standards is that there are so many to choose from." - Fortune Cookie Wisdom