Donc, je fais une application de type Instant Messenger similaire à YahooMess.J'ai besoin d'une bonne conception de base de données. J'ai une table d'utilisateur qui a un nom d'utilisateur et un mot de passe de pk (id), mais ces utilisateurs ont également une liste d'amis faite d'autres utilisateurs. Quel conseil pouvez-vous me donner?S'il vous plaît me recommander un bon design de base de données
0
A
Répondre
1
créer le tableau des utilisateurs (UserId, Name, Password), puis un tableau M: N UserHasFriends (UserId, UserId_Friend).
assurez-vous que vous stockez vos mots de passe comme hashs salés, jamais en texte brut
exemple de travail: http://sqlfiddle.com/#!2/18aef/3
exemple de code:
create table Users
(
UserId int not null primary key,
Username varchar(255) not null,
Password varchar(64) not null
);
create table UserHasFriends
(
UserHasFriendId int not null primary key ,
UserId int not null,
UserId_Fiend int not null
);
insert into Users
values (1,'UserA','hashA'),
(2, 'UserB', 'HashB'),
(3, 'UserC', 'HashC');
insert into UserHasFriends
values (1, 1,2), -- User B is a Friend of User A
(2,1,3); -- user C is a friend of A
select UserWithFriends.Username as User,
Friends.Username as Friend
from Users as UserWithFriends
join UserHasFriends
on UserWithFriends.UserId = UserHasFriends.UserId
join Users as Friends
on Friends.UserId = UserHasFriends.UserId_Fiend
0
Aller sur la chose entière dans ce qui suit chemin:
Utilisez une relation qui a (UserID, Username, Password)
. La seconde relation passe alors à (UserID, FriendUserID)
où FriendUserID est l'ID de l'ami de la personne ayant l'ID utilisateur.
+0
Merci, j'ai pensé de la même façon –
Questions connexes
- 1. S'il vous plaît recommander un bon tutoriel Slime ou screencast
- 2. Quelqu'un peut-il me recommander s'il vous plaît un bon tutoriel PyQt/PySide/livre/série vidéo?
- 3. S'il vous plaît recommander un projet open source avec des commentaires de qualité en bon anglais
- 4. Pouvez-vous recommander un bon développement de cartographie php Gantt?
- 5. Pouvez-vous recommander un bon utilitaire de synchronisation SSH?
- 6. Pouvez-vous recommander un podcast sur OOP & Design?
- 7. Données de base - s'il vous plaît aidez-moi à construire le bon modèle de données
- 8. S'il vous plaît recommander un plugin jquery médiathèque
- 9. S'il vous plaît recommander un HTML Prototype Builder
- 10. SET() ou S'il vous plaît suggérer un design approprié
- 11. Recommander s'il vous plaît: statique générateur de site sans ruby
- 12. Est-ce un bon design?
- 13. S'il vous plaît recommander un bon cadre de journalisation de débogage pour ASP.NET avec une bonne visionneuse
- 14. Pourriez-vous me recommander un analyseur javascript côté serveur?
- 15. S'il vous plaît me recommander quelques rails/code source open ruby qui a besoin de documentation/tests écrits
- 16. Pouvez-vous s'il vous plaît me parler de cet avertissement?
- 17. S'il vous plaît recommander une bonne lecture sur Squirrel
- 18. S'il vous plaît recommander une application simple d'enregistrement automatique GUI?
- 19. Base de données Design NBA
- 20. Base de données Design Question
- 21. Est-ce un bon design?
- 22. Design base de données pour un hôtel
- 23. Quel onglet léger JS avec un bon design utilisez-vous?
- 24. pouvez-vous s'il vous plaît me préciser concernant l'application intranet?
- 25. S'il vous plaît me suggérer sur l'utilisation correcte de notifyDataSetChanged()
- 26. Bon Grand Enum Design
- 27. Est-ce un bon design?
- 28. s'il vous plaît me aider à l'installation de titane
- 29. S'il vous plaît me expliquer cette ligne de code
- 30. Délai d'expiration de la connexion. HELP ME S'IL VOUS PLAÎT
Votre question est trop large et subjective. Très rarement est-il une réponse définitive à "Quelle est la meilleure solution à X?" des questions. –
Ces champs sont-ils nécessaires uniquement pour votre application? – akaHuman