правильно. я же не говорю, что надо их юзать просто откройте модуль DB.PAS и посмотрите, как организовано взаимодействие TTable c TDataSource через класс TDataLink. вот простой пример, объявление класса TDataSource:
TDataSource = class(TComponent)
private
FDataSet: TDataSet;
FDataLinks: TList;
FEnabled: Boolean;
FAutoEdit: Boolean;
FState: TDataSetState;
FOnStateChange: TNotifyEvent;
FOnDataChange: TDataChangeEvent;
FOnUpdateData: TNotifyEvent;
procedure AddDataLink(DataLink: TDataLink);
procedure DataEvent(Event: TDataEvent; Info: Longint);
procedure NotifyDataLinks(Event: TDataEvent; Info: Longint);
procedure NotifyLinkTypes(Event: TDataEvent; Info: Longint; LinkType: Boolean);
procedure RemoveDataLink(DataLink: TDataLink);
procedure SetDataSet(ADataSet: TDataSet);
procedure SetEnabled(Value: Boolean);
procedure SetState(Value: TDataSetState);
procedure UpdateState;
protected
property DataLinks: TList read FDataLinks;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Edit;
function IsLinkedTo(DataSet: TDataSet): Boolean;
property State: TDataSetState read FState;
published
property AutoEdit: Boolean read FAutoEdit write FAutoEdit default True;
property DataSet: TDataSet read FDataSet write SetDataSet;
property Enabled: Boolean read FEnabled write SetEnabled default True;
property OnStateChange: TNotifyEvent read FOnStateChange write FOnStateChange;
property OnDataChange: TDataChangeEvent read FOnDataChange write FOnDataChange;
property OnUpdateData: TNotifyEvent read FOnUpdateData write FOnUpdateData;
end;
т.е. у одного компонента TTable может быть несколько связанных с ним компонентов TDataSource,и все они будут "знать", об изменении состояния TTable. схожим образом организуется взаимодействие между db-aware контролами и источником данных, только там в качестве связующего класса используется класс TFieldDataLink. но принцип - тот же.