Nous avons une application Web, soutenue par une base de données MySQL.Magasin 2-dim table de présence dans la base de données?
Une partie du système que nous codons nous oblige à stocker la présence (c'est-à-dire oui/non) aux sessions pour les utilisateurs pour chaque jour de la semaine. Par exemple, nous devrions stocker du lundi au vendredi, puis pour chaque jour, le matin, le déjeuner, l'après-midi, les sessions du soir, etc. Donc, essentiellement, c'est un tableau de 2-dim.
Je me demandais quel est le moyen le plus propre de stocker cela dans la base de données?
À l'heure actuelle, la personne qui travaille sur ce point semble pencher pour stocker cela comme un int pour chaque jour, avec 1 représentant la participation et 0 représentant ne pas assister. Je pense que le moyen de faire est d'utiliser un masque de bits (par exemple 13 pour 1101, donc toutes les sessions sauf l'après-midi). Ils sont juste en train de stocker en tant que 0 et 1 pour une raison étrange.
Je pensais qu'il pourrait être plus facile de le stocker comme une liste de bools (bits/tinyints), par exemple. monday_morning, lundi_lunch, lundi_afternoon etc., car il est sémantiquement plus "correct" (je pense?), il sera probablement plus facile à étendre/maintenir, et je semble aussi être le seul dans l'équipe avec une idée de comment faire des opérations de bits ... lol.
Une autre façon que je pensais était juste d'avoir un 1: tableau 1 pour chaque utilisateur, avec une liste de tous les temps, ils sont assister, par exemple. Efficacité de cette approche? (Je ne sais pas quel genre de modèles de lecture/écriture, mais je devine une répartition assez égale de lecture/modification).
Quelles sont les recommandations à ce sujet? Ou y a-t-il de meilleures façons de stocker ces données? En outre, en note de côté, il s'agira probablement d'un booléen - il serait douteux que nous ayons besoin de stocker plus d'états que d'assister/de ne pas assister à la table, et si nous le faisons, nous sommes prêts à re -travaille le schéma. Ou est-ce que les gens suggèrent fortement d'aller sur les bits?
Cheers, Victor
Sybase (et donc je pense MS SQL Server) ne stocke jusqu'à 8 colonnes de bits dans un octet si vous recevez des prestations de stockage – Mark
heya, Oui, j'ai cru comprendre que beaucoup de SGBDR emballerait bits consécutifs ensemble de toute façon. Si c'est le cas, les minuscules sont-elles toujours la solution? Je ne suis pas vraiment un gars DB. Recommanderiez-vous l'approche du bitmask? J'ai moins d'expérience à les utiliser dans les bases de données - dans le code je l'utiliserais si les types de lectures/écritures que je devais utiliser, donc ça serait utile ici, je suppose - mais c'est vraiment quelque chose de fait beaucoup dans les bases de données? Ou est-ce qu'une autre approche (par exemple, comme le suggère tvanfosson) est plus correcte/efficace et plus courante? Salut, Victor – victorhooi