Bir veritabanında en az bir tablo olmak şartıyla, birbirleriyle ilişkili birden fazla tablo bulunabilir. Tablolar arasında ilişkinin sağlanması için sayısal bir alan kullanılmalıdır. SqLite veri tabanı programında da birbirleriyle ilişkili tablo tanımlayabilirsiniz. Bu uygulamamızda daha önce tanımladığımız Uyeler tablosuyla ilişkili Hareket tablosu oluşturulacaktır.
Form sayfasına aşağıdaki kodları yazalım.
SQLiteConnection con;
SQLiteDataAdapter da;
SQLiteCommand cmd;
DataSet ds;
private void Form1_Load(object sender, System.EventArgs e)
{
if (!File.Exists("skorlar.s3db"))
SQLiteConnection.CreateFile("skorlar.s3db");
con = new SQLiteConnection("Data Source=skorlar.s3db;Version=3;");
con.Open();
string sql = @"CREATE TABLE IF NOT EXISTS Uyeler(
Kodu INTEGER PRIMARY KEY AUTOINCREMENT ,
Adi VARCHAR(25) NOT NULL,
Soyadi VARCHAR(25) NOT NULL,
UserName VARCHAR(25) NOT NULL,
Password VARCHAR(25) NOT NULL
);";
cmd = new SQLiteCommand(sql, con);
cmd.ExecuteNonQuery();
string sql1 = @"CREATE TABLE IF NOT EXISTS Hareket(
id INTEGER PRIMARY KEY AUTOINCREMENT ,
Tarih TEXT NOT NULL,
Seviye INTEGER NOT NULL,
Sure TEXT NOT NULL,
Bittimi INTEGER NOT NULL,
Kodu INTEGER NOT NULL,
FOREIGN KEY(Kodu) REFERENCES Uyeler(Kodu)
);";
cmd = new SQLiteCommand(sql1, con);
cmd.ExecuteNonQuery();
con.Close();
}
Ana tabloda silinen bir kaydın ilişkili tabloda yer alan tüm kayıtları silmesini istemiyorsak tabloyu aşağıdaki gibi oluşturmamız gerekir.
string sql1 = @"CREATE TABLE IF NOT EXISTS Hareket(
id INTEGER PRIMARY KEY AUTOINCREMENT ,
Tarih TEXT NOT NULL,
Seviye INTEGER NOT NULL,
Sure TEXT NOT NULL,
Bittimi INTEGER NOT NULL,
Kodu INTEGER NOT NULL,
FOREIGN KEY(Kodu) REFERENCES Uyeler(Kodu)
ON UPDATE RESTRICT
ON DELETE RESTRICT;
);";
Tam tersi olarak ilişkili tablodaki tüm kayıtların da etkilenmesini istiyorsak tabloyu aşağıdaki gibi tanımlayın.
string sql1 = @"CREATE TABLE IF NOT EXISTS Hareket(
id INTEGER PRIMARY KEY AUTOINCREMENT ,
Tarih TEXT NOT NULL,
Seviye INTEGER NOT NULL,
Sure TEXT NOT NULL,
Bittimi INTEGER NOT NULL,
Kodu INTEGER NOT NULL,
FOREIGN KEY(Kodu) REFERENCES Uyeler(Kodu)
ON UPDATE CASCADE
ON DELETE CASCADE;
);";
|