2010-10-21 3 views
1

Objectif: Les feuilles de gestion et le système de paie exige que le système de hodiday de week-end officiel stocké dans la base de données à être appelé tout en générant le salaire mensuel pour chaque employé dans la organisation. Générer un schéma de base de données flexible pour stocker le système de week-end est l'objectif.système de paie: la structure de base de données pour le stockage flexible du week-end système

Problème: Le schéma de base de données doit être assez flexible pour permettre les modifications dans la définition d'un week-end. Le week-end dans notre scénario peut être défini comme:

1. dimanche
2. Dimanche + 1er ou 2ème ou 3ème ou 4ème samedi
3. Dimanche + (1er et 2e) ou (1er et 3e) ou (1er et 4) ou (2e et 3e) ou (2e et 4e) ou
(3e et 4e) samedi
4. dimanche + tous les samedis

Répondre

1

peut-être stocker le système comme ça 11111 - signifie dimanche et tout Sats 10000 - signifie seulement dimanche 11010 - signifie dimanche et 1er et 3e sats

donc premier numéro est dimanche, deuxième - 1er samedi, etc

Vous pourriez l'utiliser Bitwise ou pour vérifier certaines valeurs telles que

vérification pour le 1er samedi

SELECT * FROM nom_table where holiday_scheme | 01000> 0

Espérons que ça aide.

+0

La logique de bits est trop sous-estimée! – EtherealMonkey

+0

Je ne suis pas sûr de ce que vous voulez dire. Est-ce bon dans ce cas ou pas? –

+0

Je pense que c'est un excellent plan. J'ai immédiatement eu la même pensée que vous quand j'ai commencé à lire la question. C'est un bon exemple de ce que j'avais en tête (en C#) pour piloter MySql en utilisant cette méthode: http://geekswithblogs.net/BlackRabbitCoder/archive/2010/07/22/c-fundamentals-combining-enum-values- avec-bit-flags.aspx – EtherealMonkey

0

La logique au niveau du bit peut être intelligente, mais je crois que ce schéma ne s'adapte pas bien car cette expression est probablement traduite dans un balayage de table. Si ce nom de table est grand, il peut vous punir beaucoup sur les jointures.

Il peut être mieux si vous créez un work_day_schedule et associez cette planification au 'nom_table' (ex .: employé). Maintenant, une analyse de table sur le work_day_schedule ne ferait pas trop mal et vous pouvez faire la magie bitwise que vous voulez.

Questions connexes