Bir MySQL veritabanı içinde insanlar arasındaki bağlantıları depolamak [closed]

1 Cevap php

Ben insanlar arasındaki bağlantıları saklamak bir veritabanı oluşturmak istiyorum.

Ben o zaman insanlar bağlı detaylandırma kayıtları geri getirmek gerekir ki diğerleri.

Çıkış için gereken: person1 Person2 bağlı person3 vb ile bağlanır

How can I get started with this task?

1 Cevap

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.