The way changes are detected is by having a very detailed WHERE clause in UPDATE and DELETE queries.
For example, here is an update query generated by the DataAdapter configuration wizard:
UPDATE tblEmployee
SET FirstName = @FirstName, LastName = @LastName,
DepartmentID = @DepartmentID, Salary = @Salary
WHERE (ID = @Original_ID) AND (DepartmentID = @Original_DepartmentID
OR @Original_DepartmentID IS NULL AND DepartmentID IS NULL)
AND (FirstName = @Original_FirstName) AND (LastName = @Original_LastName)
AND (Salary = @Original_Salary OR @Original_Salary IS NULL AND Salary IS NULL)