Mathematical and Physical Journal
for High Schools
Issued by the MATFUND Foundation
Already signed up?
New to KöMaL?

Problem I. 218. (September 2009)

I. 218. Besides forums and blogs, computer users often use mailing lists. Open lists forward each incoming e-mail, whereas closed lists only accept letters from members.

The following (fictitious) database contains some mailing lists, details about their traffic and membership information, managed by a mailing list server.

1. Prepare a new database levlista. The given four data tables (lista.txt, szemely.txt, tagsag.txt, log.txt) should be imported into the database with the corresponding names lista, szemely, tagsag and log as table names. The files are tabulator separated text files in UTF-8 encoding. The first lines contain the field names. When creating tables, appropriate types should be set, and fields suitable for keys should be marked. An individual identifier with name az should be added to the log table.

Tables

lista (nev, admin, zart)

nev The name of the list (text), this is the key.
admin E-mail address of the list administrator (text).
zart If the list is a closed one, only e-mails from members are forwarded (logical).

szemely (nev, email)

email E-mail address of the person (text), this is the key.
nev Name of the person (text), optional.

tagsag (az, email, listanev, felirido, leirido)

az Identifier of the membership (number), this is the key.
email E-mail address identifying the member (text).
listanev Name of the list identifying the list (text).
felirido Date of subscription of the member (date). From this date the server forwards mails of that person sent to the closed list.
leirido Date of unsubscription of the member (date). This field is empty, if the member's subscription is active. If the list is closed and the membership has finished, the server no longer forwards those mails.

log (az, listanev, felado, ido)

az Identifier of the log file (counter), this is the key.
listanev Addressee of the e-mail (i.e., name of the list) sent to the list server (text).
felado Address of the sender of the mail (text).
ido Date of receipt of the e-mail (date).

When solving the following tasks, queries and reports should be saved using the names in parentheses. In your solution, only the required columns should appear without any unnecessary data.

2. Make a query to display names of people with a tel.hu address in alphabetical order (2tel).

3. Make a report that displays mailing lists grouped by their administrators. Besides the e-mail address of an administrator, the number of lists managed by that person should also appear (3admin).

4. Make a query that displays for each list the number of e-mails sent to closed lists on the server in 2007 (4zart2007).

5. Make a query to display on which list e-mail traffic started last. Give the name of the list and the date of the first mail (5utolso).

6. Make a query to display those lists whose members currently can receive e-mails from the person with address a.and@suli.eu (6and).

7. Make a query to display the names of lists having more than 40 members at 0:00, January 1, 2008 (7tagszam).

8. Make a query to display all e-mails sent from the ``matek'' (math) list. E-mail address of the sender and reception date of the mail should also be displayed. The sorting criteria is the date of receipt of the mail (8matek).

The database (i218.odb, i218.mdb) should be submitted together with a short documentation (i218.txt, i218.pdf), also specifying the name and version number of the database management system used. These files should be compressed (i218.zip).

The above-mentioned four data tables: i218source.zip

(10 pont)

Deadline expired on October 12, 2009.


Sorry, the solution is available only in Hungarian. Google translation

Az első érettségi típusú feladat nehéznek bizonyult a diákok számára, mivel tökéletes megoldás nem érkezett. Többen ellentmondást fedeztek fel a feladatban - joggal. A feladat elején a levlista adatbázis létrehozása volt a feladat, ugyanakkor az i218-as adatbázist kellett beküldeni. Mind a két megoldást elfogadtuk.

Sajnos sokan figyelmetlenek voltak és már az importálás során vétettek. Javasolt a beküldés előtt tételesen átnézni, hogy a megoldás formai szempontból tökéletesen helyes-e.

Néhányan megfeledkeztek arról, hogy egy adatbázis-kezelési feladat megoldása során nem csak az aktuális tartalom mellett kell a lekérdezéseknek, jelentéseknek helyes eredményt adniuk, hanem tetszőleges tartalom esetén.

A 2tel feladatban többen hibáztak a sorrend beállításának elmulasztásával. A tábla - lévén benne az e-mail cím az elsődleges kulcs - más beállítás hiányában az e-mail cím szerint rendezetten listázható ki. Ezért ha a lekérdezésben a rendezés elmaradt, akkor az is e-mail cím szerint rendezett, nem pedig név szerint.

A 3admin jelentésben szokatlan kívánság volt, hogy a listák számát is meg kellett jeleníteni. Szokatlan, mert a - mindenki által használt - Access programban varázslóval nem készíthető el a tökéletes megoldás, az admininisztrátorhoz tartozó levelezési listák száma nem jeleníthető meg. Ehhez egy beviteli mezőbe kell bejegyezni az =Count(*) kifejezést. Az alábbi kép egy lehetséges eredményt mutat.

A 4zart2007 lekérdezésben a levélírás idejére vonatkozó feltételt legegyszerűbben a YEAR() függvény alkalmazásával lehetett megadni. Aki a BETWEEN használata mellett döntött, figyelnie kellett arra, hogy a megnevezett határpontok részei a megadott intervallumnak. Tehát a BETWEEN 2007.01.01 AND 2007.12.31 hibás, mert az év utolsó napjának leveleit nem veszi figyelembe, csak a 0 óra 0 perckor regisztráltakat. Hasonlóan pontatlan, bár csak egy hibás másodpercnyi a hiba a BETWEEN 2007.01.01 AND 2008.01.01 kifejezésnél.

Az 5utolso feladatban többen feltételezték, hogy a sorrend időrendi - és ezt joggal tették -, mivel a naplófájlokba az adatok természetszerűleg időrendben kerülnek be. Így a MIN() függvény mellett a FIRST() függvény is használható.

A 6and feladathoz érve már csak kevesen voltak, akik emlékeztek a feladat bevezetőjének arra megjegyzésére, hogy a nyílt listákra mindenki levelét továbbítja a listaszerver. Ebből következően az adott személy tud küldeni azon listákra is, amelyen nem tag.

A 7tagszam lekérdezés ismét az időpontok fokozott figyelését kérte számon a jelenleg is tagok felismerése mellett.

A 8matek lekérdezést a többség annak figyelembe vételével oldotta meg, hogy a lista táblában a matek zárt lista. Ezt nem szabad kihasználni a feladat megoldása során.

Mivel ez egy érettségi jellegű feladat, ezért közöljük az értékelési útmutatót is, amely szerint a javítás készült: levlistaertekeles.pdf

A helyes megoldást tartalmazó adatbázis: levlista.mdb

Az érettségi pontszámot a következőképpen váltottuk át KöMaL pontszámmá: aki egy pontot veszített, az még megkaphatja a maximális 10 pontot. Ezt követően az elérhető pontszám 10 százalékonként vonunk le egy KöMaL pontot.

Az így képzett pontszámból a feladat kívánalmainak figyelmen kívül hagyása, tehát az i218.zip állománytól eltérő feltöltés, valamint a rövid dokumentáció elmaradása 1-1 pont veszteséget okoz.


Statistics:

15 students sent a solution.
10 points:Balla Attila, Kemenesi Tamás.
9 points:Szabó 928 Attila.
8 points:1 student.
7 points:2 students.
6 points:1 student.
5 points:2 students.
4 points:3 students.
3 points:2 students.
0 point:1 student.

Problems in Information Technology of KöMaL, September 2009