В последнее время я пытаюсь создать решение для базы данных, посвященное «пользовательским отношениям» - у каждого пользователя есть друзья, каждый из которых имеет собственный авторитет (авторитет описывает уровень конфиденциальности между их отношениями). Я совершенно новое в программе MySQL, вот мой дизайн две базы данных:Дизайн базы данных отношений (с использованием MySQL)
дизайн 1: Databse имеет «user_table», которые описывают основные сведения всех пользователей, таких как user_id, возраст, адрес электронной почты ... и каждый пользователь имеет «friends_table», «friends_table» содержит имя пользователя user_id (может быть запрошена информация друга), каждая «friend_table» может быть запрошена по его имени таблицы, хранящемуся в «user_table» (каждое имя friend_table уникально).
user_table
+------------------------+
| user_name(primary key) |
+------------------------+
| password |
+------------------------+
| email |
+------------------------+
| .... |
+------------------------+
| .... | friend_table
+------------------------+ ----------> +------------------------------+
| friend_table_name | | id(primary key) |
+------------------------+ +------------------------------+
| user_name |
+------------------------------+
| authority |
+------------------------------+
| .... |
+------------------------------+
дизайн 2: Databse имеет "user_table" и "relationship_table". «relationship_table» описывает все отношения пользователя.
user_table relationship_table
+------------------------+ +------------------------+
| user_name(primary key) | | id(primary key) |
+------------------------+ +------------------------+
| password | | user_name |
+------------------------+ +------------------------+
| email | | friend_name |
+------------------------+ +------------------------+
| .... | | authority |
+------------------------+ +------------------------+
| .... | | .... |
+------------------------+ +------------------------+
база по конструкции 2, пользователь по имени Джим имеет 4 друга Лиза, Том, Джерри и Джонни, что tbales как показано ниже:
user_table
+-----------+-----------+---------------+
| user_name | password | email |
+-----------+-----------+---------------+
| Jim | ***** | [email protected] |
+-----------+-----------+---------------+
| LiLei | ***** | [email protected] |
+-----------+-----------+---------------+
| .... | ***** | .... |
+-----------+-----------+---------------+
| .... | ***** | .... |
+-----------+-----------+---------------+
relationship_table
+-----------+-----------+---------------+---------------+
| id | user_name | friend_name | authority |
+-----------+-----------+---------------+---------------+
| 1 | Jim | Lisa | *** |
+-----------+-----------+---------------+---------------+
| 2 | Jim | Tom | *** |
+-----------+-----------+---------------+---------------+
| 3 | Jim | Jerry | *** |
+-----------+-----------+---------------+---------------+
| 4 | Jim | Johnny | *** |
+-----------+-----------+---------------+---------------+
| 5 | Qing | Jim | *** |
+-----------+-----------+---------------+---------------+
| 6 | Feng | Tom | *** |
+-----------+-----------+---------------+---------------+
| 7 | Guang | Tom | *** |
+-----------+-----------+---------------+---------------+
, если я хочу, чтобы запросить друг Джима, я использую SQL-команда:
select friend_name from relationship_table where user_name='Jim';
Рассмотрите результаты работы с базой данных, эти 2 варианта, которые лучше? или существует лучший дизайн?
Поиск «модели вложенного набора» –
дизайн 1 даже не вариант – Strawberry