Tamam, bana bir MySQL veritabanı belirli girdileri arasındaki ilişkileri öğrenmek istediğiniz anlamına varsayalım. Ideal bir yol - bence - bu durumda biz tblUsers çağırır Kullanıcıların tablo var olacaktır. Seni çok sütun olurdu eminim, ama bu bağlantı uğruna biz diğer kullanıcılar ile ilişkileri için bir sütun 'ucons' adlandırabilirsiniz.
Eğer ya da farkında olmayabilir gibi, kullanıcıların tablo bu durumda ben 'uid' ona, bir birincil anahtar sütunu olacaktır. Her kullanıcının birincil anahtar sütun 'uid' benzersiz bir id alır gibi bu birincil anahtarlar sonuçta, kullanıcı girişlerini hedeflemek için kullanılır.
Biz üç kullanıcı var diyelim: birey2, user1, kullanıcı3 kim aşağıdaki kullanıcı kimliklerini var:
user1 -> 1
user2 -> 2
kullanıcı3 -> 3
Şimdi, ilişkileri hakkında sorunuza, ben genelde ayrı bir tabloda ilişki anahtarlarını saklamak istiyorsunuz kullanıcılara binlerce olabilir, çünkü bu, ve her kullanıcı 200 bağlantıları olsaydı, özellikle, masanın üzerinde havai bir sürü iş olduğunu Diğer işlemler, aynı zamanda tablo üzerinde yapılmaktadır Eğer! Bir ilişki için çok - bu birçok için bir biri olarak bilinir.
Şimdi, insanlar arasında bizim gerçek 'bağlantı' için iki sütunlu bir saniye tablo var sağlar, biz sütunlar 'cid' cuser 've' ccon 'ile' tblconnections 'diyoruz eder.
cid is a primary key
cuser is the ID of the user from tblusers who has just created a connection
ccon is the ID of the CONNECTED user in tblusers
Yani aşağıdaki iki tablo düzenleri atalım:
tblUsers:
-------------------
uid | uname | uage
-------------------
0 | Joe | 22
1 | Bob | 54
2 | Tod | 14
tblconnections
-------------------
cid | cuser | ccon
-------------------
0 | 1 | 2
1 | 1 | 0
Bu artık id '1 onu kullanın ve tblUsers kullanıcı '0 'bir tane' iki bağlantıları kullanıcı '2 tane bulunur söyler, bu yüzden kullanıcı 1 (Bob) bir Tod bağlantı yanı sıra Joe vardır.
: Bu bilgi ile gibi basit bir mysql sorgu yapabilirsiniz
SELECT uid AS id, (SELECT GROUP_CONCAT(cconn) FROM tblconnections WHERE cuser = id) FROM tblusers;
Bu 'tblUsers' yanı sıra bağlı tüm kullanıcıların birleştirilmiş bir dizeye sizin her zamanki Iser id dönecektir. Yani kullanıcı kimliği '3 'olabilir ve sıralı dize bu gibi görünebilir: 2,6,22,45,67,8 kullanıcı '3 bağlı tüm kullanıcıların listesi olan' bu durumda.
Sorgunuz ile birlikte her bağlanan kullanıcıların bilgi döndürmek için birçok yöntem vardır, unutmayın, bu sadece bir örnektir.
Eğer öğreticiler okumak istiyorsanız, basitçe veya "MySQL tablo ilişkileri" "çok çok bir ilişkilerden bir tane", "veritabanı ilişkileri" google.
Bu konuda biraz ışık tutuyor umuyoruz.
İyi bir tane var.