Community-Seite: Admin-/Moderator-Wahlen

Fragen zur Konzeptionierung und womit man am besten anfäng? Hier rein...

Community-Seite: Admin-/Moderator-Wahlen

Beitragvon euromark am Do 7. Jan 2010, 23:16

Ich bin gerade an der Planung eines neuen Moduls für meine Community-Seite
Dabei sollen alle Mitglieder die Change haben, ihre Admins/Mods zu wählen

Meine SQL-Schema-Idee wäre die folgende:
Code: Alles auswählen
CREATE TABLE IF NOT EXISTS `comm_elections` (
  `id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  `role_id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  `title` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `comment` text COLLATE utf8_unicode_ci NOT NULL,
  `status` tinyint(2) unsigned NOT NULL DEFAULT '0',
  `start_date` date NOT NULL,
  `end_date` date NOT NULL,
  `modified` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

CREATE TABLE IF NOT EXISTS `comm_election_nominees` (
  `id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  `election_id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  `user_id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  `comment` text COLLATE utf8_unicode_ci NOT NULL,
  `status` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '-1=declined; 1=accepted',
  `votes` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'sum of votes - redundant',
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;

CREATE TABLE IF NOT EXISTS `comm_election_votes` (
  `id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  `election_id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  `election_nominee_id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  `user_id` char(36) COLLATE utf8_unicode_ci NOT NULL,
  `created` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM;


und in den configs einstellbar:
- votes_per_user (defaults to 1)
- allow_vote_oneself (true/false)
- requirements (z.b. register_date > ... oder user_points > ...)
- min_turnout (minimale wahlbeteiligung für gültige wahl)
- min_nominees (wie viele müssen mindestens zur wahl stehen = vorher nominiert werden)
- amount_winners (wie viele wahlsieger gibt es - standard: 1)
- ...

habt ihr noch irgendwelche anregungen oder dinge, die bisher nicht bedacht worden sind?
euromark
 
Beiträge: 397
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 1.2.4
OS: Windows

Re: Community-Seite: Admin-/Moderator-Wahlen

Beitragvon Mathias am Do 7. Jan 2010, 23:42

Hier ein schneller Gedanke: Sollte wirklich die user_id bei einem Vote gespeichert werden? Eigentlich ganz interessant, wer einen so wählt, aber irgendwie gehört Anonymität bei mit zu Wahlen (jedenfalls bei solchen) ;)
cheers
Benutzeravatar
Mathias
 
Beiträge: 184
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.2.5
OS: OS X 10.6.x

Re: Community-Seite: Admin-/Moderator-Wahlen

Beitragvon euromark am Do 7. Jan 2010, 23:45

prinzipiell hast du recht
aber die werden ja nicht veröffentlicht, gerantieren aber, dass jeder nur x mal wählt
simpel und elegant

wie gesagt, wer alles abstimmt wird nirgendwo - nicht mal den admins - ersichtlich

alles andere wäre vermutlich umständlicher:
- extra tabelle mit "used_votes" etc
- n tmp file in einem cache ordner mit der anzahl der stimmen (ohne angabe wer gewählt wurde dadurch)
die danach wieder gelöscht werden können, wenn die wahl zu ende ist
wäre meine idee

aber eben nich mehr ganz so schön simpel wie obige lösung schätze ich
euromark
 
Beiträge: 397
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 1.2.4
OS: Windows

Re: Community-Seite: Admin-/Moderator-Wahlen

Beitragvon Mathias am Do 7. Jan 2010, 23:50

Ich konnte mir den Grund schon denken. Aber die Daten sind dennoch erstmal gespeichert. Ersichtlich werden sie nur, wenn ich als Admin mir die Tabelle in der Datenbank anschaue. Sicherlich geht es hier 'nur' um Admin-/Mod-Wahlen und die Motiviation, mir die abstimmenden User anzuschauen ist sehr gering, aber dennoch möglich ;)
Die drei Tabellen sehen vollständig aus.
cheers
Benutzeravatar
Mathias
 
Beiträge: 184
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.2.5
OS: OS X 10.6.x

Re: Community-Seite: Admin-/Moderator-Wahlen

Beitragvon euromark am Fr 8. Jan 2010, 09:54

also ich habs mir nochma durch den kopf gehen lassen

wenn wir die einstellung
- ballot (true/false)
einführen, könnten wir die "user_id" wirklich unter den tisch fallen lassen für TRUE (geheime Wahl).
dafür zählen wir dann einfach "count" im "votes" table hoch
und die votes im "nominees" table sind dann direkt die bekommenen stimmen
euromark
 
Beiträge: 397
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 1.2.4
OS: Windows

Re: Community-Seite: Admin-/Moderator-Wahlen

Beitragvon Mathias am Fr 8. Jan 2010, 10:23

Und du kannst dann immer noch herausfinden, OB ein User schon gewählt hat oder nicht? Oder wieviele Stimmen er noch frei hat (wenn er mehr als eine Stimme vergeben kann).
Mir kam da eben gerade noch eine zusätzliche Tabelle in den Sinn, wo lediglich die user_id und die election_id gespeichert werden. Damit kann man wissen, wer gewählt hat, aber nicht was. Das ist nur ein schneller Gedanke. Ich bin hier gerade zwischen Tür und Angel ;)
cheers
Benutzeravatar
Mathias
 
Beiträge: 184
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.2.5
OS: OS X 10.6.x

Re: Community-Seite: Admin-/Moderator-Wahlen

Beitragvon euromark am Fr 8. Jan 2010, 10:50

genau
aber die zusätzliche tabelle will ich eigentlich vermeiden^^

ich bin zwar eigentlich immer der Hardcore-Normalizer - aber in dem Fall halt ichs für übertrieben

deswegen die idee mit dem "count"
ist ja das selbe, nur dass es in der votes tabelle direkt mitgespeichert wird :)
euromark
 
Beiträge: 397
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 1.2.4
OS: Windows


Zurück zu Konzeption und Vorgehensweise

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron