Szerző Téma: Adatbáziskezelés  (Megtekintve 101413 alkalommal)

0 Felhasználó és 1 vendég van a témában

Elérhető Keveqiah

  • Globális moderátor
  • Teljes tag
  • *****
  • Hozzászólások: 2.332
  • Kisb
    • Keveqiah
Re: Adatbáziskezelés
« Válasz #1496 Dátum: 2011. április 22., 13:58:40 »
Elsőként én is így gondoltam. Van egy megrendelés tábla, ebből lesz lekérdezve minden aktív rendelés cronnal.
A cron minden nap lefutna. A lekérdezések adott időpontok alapján küldene levelet. pl 30, 20, 5, 1 nappal a lejárati idő előtt.
Akkor véleményetek szerint elég egy mező, amiben a legutoljára küldött levél időpontja lenne?
"Gonosz vagyok. Ez ugyebár nem hit dolga."
"Egy ember halála tragédia, ezrek halála statisztika."

Nem elérhető Warner

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 6.438
    • CodeNet
Re: Adatbáziskezelés
« Válasz #1495 Dátum: 2011. április 22., 10:47:21 »
Mivel a két tábla között 1:0..1 kapcsolat lenne (1 felhasználóhoz 0 vagy 1 küldési időpont tartozik), és csak 1 mezője van a második táblának, ami nem nagy (DATE típusú), ezért célszerűbb lenne a küldési időpontot tartalmazó mezőt is az első táblához csapni szerintem. Az összecsatolás miatt csak lassabb lesz külön táblával a lekérdezés. Kivétel persze, ha az adott környezetben a felhasználók táblájának szerkezete nem módosítható.

Elérhető Keveqiah

  • Globális moderátor
  • Teljes tag
  • *****
  • Hozzászólások: 2.332
  • Kisb
    • Keveqiah
Re: Adatbáziskezelés
« Válasz #1494 Dátum: 2011. április 22., 10:23:20 »
Update.. Egy kis elmélet :)
E-mail értesítőket kellene küldeni x naponta. Ezeknek a kiküldéseknek az ellenőrzésére kéne valami féle ellenőrzés. Az úgy életképes ötlet, hogy külön táblában tárolom a küldés időpontját és mely rekordhoz tartozik? Küldések előtt pedig megnézem, mikor ment ki az adott rekordoz email, ha nincs, levélküldés, ha van, de a küldés ideje nem esik bele egy idő intervallumba, akkor küldés.

Ötletek, vélemények?
"Gonosz vagyok. Ez ugyebár nem hit dolga."
"Egy ember halála tragédia, ezrek halála statisztika."

Elérhető Keveqiah

  • Globális moderátor
  • Teljes tag
  • *****
  • Hozzászólások: 2.332
  • Kisb
    • Keveqiah
Re: Adatbáziskezelés
« Válasz #1493 Dátum: 2011. február 17., 13:56:29 »
Mit, ill. melyik eljárást célszerűbb adatbázis mentésnél használni?
SQL import csv fájlba, vagy sql_dump ?

Jelen esetben egy ill. több tábla adatait kellene kimenteni egy fájlba, ami vagy letölthető, vagy sem. Ez opcionális. Nem csináltam még ilyen jellegű adatbázis importot, ezért kérdezek inkább, hogy mi a legjobb vagy leg alkalmasabb megoldás.
"Gonosz vagyok. Ez ugyebár nem hit dolga."
"Egy ember halála tragédia, ezrek halála statisztika."

Nem elérhető klank

  • Tag
  • *
  • Hozzászólások: 234
Re: Adatbáziskezelés
« Válasz #1492 Dátum: 2011. február 13., 13:57:24 »
A kérdésem nem a PHP-vel kapcsolatos, de adatbázis-kezelés, ezért írom ide.

A 2009. októberi középszintű informatika érettségi Access feladatának F lekérdezésének a megoldását nem értem. Vagyis csak egy részét...

Én úgy csináltam, hogy "létrehoztam" egy seged nevű lekérdezést, amely 1 mezőt és 1 rekordot tartalmaz. Ebbe a mezőbe a 3-mas szám van, ami a dániai írók Nobel-díjainak száma. SQL paranccsal:
Kód: SQL
  1. SELECT COUNT(*) AS darab
  2. FROM fold INNER JOIN iro ON fold.azon = iro.szulhely
  3. GROUP BY fold.orszag
  4. HAVING fold.orszag="Dánia";

Majd ennek a segédlekérdezésnek a felhasználásával nekiálltam az igazi feladatnak, hogy melyek azok az országok, ahol a Nobel-díjasok száma több mint Dániáé. SQL paranccsal:
Kód: SQL
  1. SELECT fold.orszag, COUNT(*) AS darab
  2. FROM (SELECT COUNT(*) AS darab FROM fold INNER JOIN iro ON fold.azon = iro.szulhely GROUP BY fold.orszag HAVING fold.orszag="Dánia") AS seged, fold INNER JOIN iro ON fold.azon = iro.szulhely
  3. GROUP BY fold.orszag, seged.darab
  4. HAVING (COUNT(*)>seged.darab);

Amit most beírtam, az működik és helyes. De csak azért, mert megnéztem a megoldást, hogy hogyan kell. A hibám a GROUP BY sorában volt, mert én nem csoportosítottam a seged.darab-ra. Miért kell arra is csoportosítani azon kívül, hogy másképp nem tudom futtatni a lekérdezést?  :confused:

Ezt a hibaüzenetet kapom rá: Egy olyan lekérdezést próbált végrehajtani, amely nem tartalmazza a megadott kifejezést ('Count(*)>seged.darab') egy összesítő függvény részeként.
„Aki nem próbálja meg a lehetetlent, az a lehetségest sem fogja elérni soha.”  (Goethe)
„Sokat kell olvasnod ahhoz, hogy megtudd, milyen keveset tudsz.” (Lia-Csin)
„Bármit tanulsz, magadnak tanulod.” (Petronius)

Nem elérhető Warner

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 6.438
    • CodeNet
Re: Adatbáziskezelés
« Válasz #1491 Dátum: 2011. február 10., 09:24:49 »
Akkor egy update lekérdezéssel frissítem azokat :)
Sok értelme szerintem sincs, mert a felhasználói adatok lekérdezése miatt a Bejegyzés táblát amúgy is össze kell kapcsolni a Felhasználó táblával, így a szervezetID már adott. A Bejegyzés táblában a szervezetID teljesen felesleges.

Nem elérhető tthlaszlo

  • Tag
  • *
  • Hozzászólások: 156
    • http://www.tthlaszlo.org
Re: Adatbáziskezelés
« Válasz #1490 Dátum: 2011. február 09., 19:11:47 »
Akkor egy update lekérdezéssel frissítem azokat :)
Személyes portálom - http://www.tthlaszlo.org

Nem elérhető <madbence />

  • Teljes tag
  • ***
  • Hozzászólások: 1.631
  • Twitterista :)
    • Blogom
Re: Adatbáziskezelés
« Válasz #1489 Dátum: 2011. február 09., 18:15:21 »
ugye mi van, ha megváltozik a felhasználó szervezetID-je? akkor az utóbbi megoldást kényelmetlen karban tartani. meg ugye redundancia van így.
mi chuck norris email címe? gmail@chucknorris.com
Blog: napszemuvegbe.tumblr.com
Twitter: twitter.com/madbence

Nem elérhető tthlaszlo

  • Tag
  • *
  • Hozzászólások: 156
    • http://www.tthlaszlo.org
Re: Adatbáziskezelés
« Válasz #1488 Dátum: 2011. február 09., 17:04:45 »
Egy kérdésem lenne optimalizálási szempontból, azaz, hogy lenne gyorsabb a listázás.

Van 3 tábla:

Szervezet
ID
nev

Felhasználó
id
nev
szervezetID (melyik szervezethez tartozik)

Nos az ily módon eltárolt felhasználó tud bejegyzést írni, de a szervezet nevét szeretném megjeleníteni, miközben módosítani csak továbbra is ő tudná, a szervezet többi tagja nem (kivéve aki magasabb rangú, de ez meg van oldva)

Tehát két opción gondolkodom, de ez nem azt jelenti, hogy nincs egy jobb harmadik... sőt :)

Egyik megoldás:

Bejegyzés
id
tartalom
felhasznaloID

Így minden egyes megjelenítésnél INNER JOIN-al lekérdezném a szervezet-et.

Vagy,

Bejegyzés
id
tartalom
felhasznaloID
szervezetID

Így már a bejegyzésnél letárolom, de kicsit úgy érzem, hogy felesleges.
Lényeges szempont, hogy több ezres felhasználó bázisról beszélünk, és emellett még jó pár lekérdezést hajt végre az oldal megjelenéskor.

Remélem jól leegyszerűsítettem a problémát, hogy érthető legyen.
Személyes portálom - http://www.tthlaszlo.org

Nem elérhető djereg

  • Tag
  • *
  • Hozzászólások: 157
Re: Adatbáziskezelés
« Válasz #1487 Dátum: 2011. február 05., 13:10:03 »
Felraktam itthon a postgres szervert, windows rendeszeren, hogy ismerkedjek vele, el is tudom indítani paranacssorból, de ha bezárom azt akkor a szerver is megál. :( tudna valaki segíteni, hogy oldjam meg hogy valóban a háttérben fusson? mondjuk mint az apache sezrver vagy mysql szerver...
« Utoljára szerkesztve: 2011. február 05., 13:26:36 írta djereg »

Nem elérhető djereg

  • Tag
  • *
  • Hozzászólások: 157
Re: Adatbáziskezelés
« Válasz #1486 Dátum: 2011. február 04., 21:32:42 »
egyelőre a hatalmas nálam olyan 1 - 6 GB-ot jelent... vagyis a legnagyobb táblázat 5.4GB, össz-visz meg kb. 13GB az egész... Csak a sebesség a mindennél fontosabb...

Nem elérhető Warner

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 6.438
    • CodeNet
Re: Adatbáziskezelés
« Válasz #1485 Dátum: 2011. február 04., 21:28:59 »
Oracle. Már ha tényleg hatalmasak azok adatbázisok. (Értsd: több TB méretűek.)
A kettő között választva amúgy ezt a cikket ajánlom: http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL

Nem elérhető djereg

  • Tag
  • *
  • Hozzászólások: 157
Re: Adatbáziskezelés
« Válasz #1484 Dátum: 2011. február 04., 21:20:34 »
Hali!

Mit tanácsoltok? Hatalmas adatbázisokból kellene kiolvasnom adatokat, gyorsan, nagyon gyorsan és sűrűn. MySQL vagy PostgreSQL?
Olvasgattam mindkettő után, de nem tudok düllőre jutni, hogy melyik jobb...

Nem elérhető Rimelek

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 8.942
    • rimelek.hu
Re: Adatbáziskezelés
« Válasz #1483 Dátum: 2011. február 03., 10:47:29 »
Mi a különbség a kettő közt ? Gyorsabb ez?  Én így ha rá nézek az e fajta szintaktikára , csak egy bonyolításnak látom ezt a formát.
Azért érdekel hogy miben különbözik ez így?
Ez csak egy alternatív szintaktika. Nem hiszem, hogy bármi köze van a sebességhez. Maximum a szintaktika felismerésében lehetne. Minden bizonnyal ugyanaz az algoritmus fut a háttérben utána.
És ha ez bonyolítás, akkor gondolom az update szintaktikáját is bonyolultnak találod :) Szerintem pont logikusabb és átláthatóbb az a forma, ahol a név és érték egymás mellett van. Nem kell keresgélni melyik érték hányadik a listában. Nem egyszer volt itt olyan kérdés, hogy miért nem jó az insert. És az volt a baj, hogy nem egyezett a megadott mezők száma az értékek számával.

Tudom hogy az id mező automatikus azt nem is írtam .
De ha nem írod ki a mező neveit, akkor nem hagyhatod ki az értéklistából az id értékét sem.
Egyszerűen létezem, és lézengek a Földön,
mint idióta szellem, kinek kastélya a börtön.

Nem elérhető Isti861

  • Törzstag
  • **
  • Hozzászólások: 494
    • BikaTorrent Tracker
Re: Adatbáziskezelés
« Válasz #1482 Dátum: 2011. február 03., 00:24:36 »
Mindkét szintaktika helyes mysql-ben
Mi a különbség a kettő közt ? Gyorsabb ez?  Én így ha rá nézek az e fajta szintaktikára , csak egy bonyolításnak látom ezt a formát.
Azért érdekel hogy miben különbözik ez így?
Tudom hogy az id mező automatikus azt nem is írtam .