SQLite supports the definition of foreign key constraints, but does not enforce them currently. There are plans for enforcement in SQLite's near future.
This .NET provider will parse and provide enough schema for foreign keys so that drag-n-dropped tables onto a typed dataset will automatically link up -- basically they behave as they should for the sake of the designer.
An example of a foreign key declaration (taken from an adaptation of Microsoft's northwind.db to SQLite):
CREATE TABLE [Employees](
[EmployeeID] integer primary key autoincrement,
[LastName] nvarchar(20) NOT NULL,
[FirstName] nvarchar(10) NOT NULL,
[Title] nvarchar(30) NULL,
[TitleOfCourtesy] nvarchar(25) NULL,
[BirthDate] [datetime] NULL,
[HireDate] [datetime] NULL,
[Address] nvarchar(60) NULL,
[City] nvarchar(15) NULL,
[Region] nvarchar(15) NULL,
[PostalCode] nvarchar(10) NULL,
[Country] nvarchar(15) NULL,
[HomePhone] nvarchar(24) NULL,
[Extension] nvarchar(4) NULL,
[Photo] [image] NULL,
[Notes] ntext NULL,
[ReportsTo] integer NULL,
[PhotoPath] nvarchar(255) NULL,
constraint fk_Employees_Employees foreign key(ReportsTo) references Employees(EmployeeID)
);
CREATE TABLE [Orders](
[OrderID] integer primary key autoincrement,
[CustomerID] nchar(5) NULL,
[EmployeeID] int NULL,
[OrderDate] [datetime] NULL,
[RequiredDate] [datetime] NULL,
[ShippedDate] [datetime] NULL,
[ShipVia] int NULL,
[Freight] money NULL DEFAULT (0),
[ShipName] nvarchar(40) NULL,
[ShipAddress] nvarchar(60) NULL,
[ShipCity] nvarchar(15) NULL,
[ShipRegion] nvarchar(15) NULL,
[ShipPostalCode] nvarchar(10) NULL,
[ShipCountry] nvarchar(15) NULL,
constraint fk_Orders_Customers foreign key (CustomerID) references Customers (CustomerID),
constraint fk_Orders_Employees foreign key (EmployeeID) references Employees (EmployeeID),
constraint fk_Orders_Shippers foreign key (ShipVia) references Shippers (ShipperID)
);