0
votes

Table d'utilisateur pour de nombreuses tables pour se connecter

J'essaie de construire le système de gestion des écoles et je n'ai du mal à concevoir une structure de base de données optimale. J'ai des tables d'élèves, de personnel et d'utilisateurs pour la connexion. La table des utilisateurs disposera uniquement d'informations de connexion (Usernumber, mot de passe) et les étudiants et le personnel contiendront des informations personnelles. J'ai séparé des étudiants et du personnel car ils contiennent des données personnelles différentes. Mais ils ont tous les deux un usernumber. XXX

Disons que je me connecte à un UserNumber 98242, comment peut laisser le système savoir où dois-je regarder, dans la table des étudiants ou la table du personnel?

Je voudrais des recommandations sur les structures de base de données.


1 commentaires

Et un étudiant ne peut jamais être membre du personnel? :) Et il n'y a pas d'autres rôles? Comme "Guest", "conseiller", ... et une personne ne peut avoir qu'un seul compte d'utilisateur? (Ou aucun compte du tout?)


4 Réponses :


0
votes

Il suffit d'ajouter une colonne USERType à Utilisateurs Table

 Entrez la description de l'image ici


0 commentaires

0
votes

Vous pouvez faire quelques choses. Vous pouvez créer un type dans la table des utilisateurs et regarder cela. Vous pouvez également rejoindre les deux tables, puis pour recevoir une vérification d'enregistrement si l'ID d'étudiant ou l'ID du personnel a été renvoyé.

Votre requête pourrait être quelque chose comme p>

SELECT users.id as user_id, students.id, staff.id FROM users 
LEFT JOIN students ON users.id = students.id
LEFT JOIN staff ON users.id = staff.id
WHERE id = 98242


0 commentaires

0
votes

Héritage:

select
  *,
  tableoid::regclass -- Prints the origin table name (users, students, stuff, ...)
from users
where number = 98242;


0 commentaires

0
votes

Bien qu'il n'y ait que peu de colonnes séparées pour les étudiants et les membres du personnel, je le garderais simple: xxx pré>

de cette façon, une personne peut avoir des comptes d'utilisateurs 0-N - qui est la typique réalité. Vous pouvez limiter à un seul compte par personne en ajoutant unique (personne_id) code> à table Utilisateurs code>. P>

code> Contrainte code> Contrainte one_role_max code> applique que les colonnes d'étudiants ou les colonnes du personnel doivent rester nulle.
Contraint code> one_role_min code> applique qu'au moins une des deux doit avoir des valeurs.
Adaptez ce qui doit être / peut être rempli à vos besoins. Les expressions fonctionnent parfaitement pour la conception actuelle. Voir: P>


0 commentaires