[英]How can I arrange this code so I can get different entry from database for each table row
[英]How to design a database so each entry can store reference to other entries?
我有一個數據庫,每個條目都代表一個用戶。 現在,我希望每個用戶都可以有IE朋友,每個條目都將有一個“朋友”字段,並且它將有代表其他用戶的多個項目。
我不確定那是否有可能,如果不能,我很想知道如何正確地做到這一點。
如果重要的話,我的數據庫是MySQL。
謝謝。
使用另一個稱為friends
表格
例如
users table
-----------
id name
1 tom
2 peter
3 jane
現在,如果您希望用戶1與2和3成為朋友,則您的表如下所示
friends table
-------------
user_id friend_id
1 2
1 3
為了擴展@juergend的答案,我將采用以下方法(我使用了他已經建議的用戶名):
create table users (
id int not null auto_increment primary key,
name varchar(20)
);
create table friends (
user1 int not null references users(id),
user2 int not null references users(id)
);
insert into users (name) values ('tom'), ('peter'), ('jane');
select * from users;
+----+-------+
| id | name |
+----+-------+
| 1 | tom |
| 2 | peter |
| 3 | jane |
+----+-------+
3 rows in set (0.00 sec)
-- make jane and peter friends:
insert into friends (user1, user2) values (
(select id from users where name='jane'),
(select id from users where name='peter')
);
select u1.name, u2.name
from users u1
join friends f on u1.id=f.user1
join users u2 on f.user2=u2.id;
+------+-------+
| name | name |
+------+-------+
| jane | peter |
+------+-------+
1 row in set (0.00 sec)
現在,這取決於您是否希望自己的友誼是對稱的(即Jane / Peter <=> Peter / Jane)。 如果是這樣,您將需要在friends
表中有兩個條目。
您必須創建兩個saprate表才能處理多個朋友條目,如下所示。
表'user'user_id user_name ...
表“朋友” ID user_id_1 user_id_2 ...
您將必須定義每個用戶的ID(稱為主鍵(只要所有用戶名都是唯一的,用戶名將作為ID))。
然后定義另一個表,稱為“朋友”,該表將包含以下行
用戶名| 朋友名用戶名| 朋友名字
這種結構稱為一對多關系。
users table friends table
id username row_id user friend
1 ali 1 ali khurram
2 khurram 2 ali tazeen
3 tazeen 3 ali babar
4 babar 4 khurram ali
5 khurram babar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.