Avatar
dude
Neregistrovaný
Avatar
dude:

čaues, potřeboval bych poradit s relačním návrhem databáze. Mám stránku kde návtěvník hodnotí profily, které jsou v tabulce Profiles(pk je IDprofilu - int), pak mám tabulku Users, která má jako pk IP adresu návštěvníka(usera).

Princip hlasování je v tom že např. pro profil 00574 může uživatel hlasovat pouze jednou. Takže potřebuju ošetřit, že když se mu vytvoří nový duel pro hlasování, tak aby tam nebylo ID pro které už hlasoval.

Př. pro uživatele s ip adresou XY se vytvoří duel s profily 0057 a 0658, poté se již pro adresu XY nesmí vytvořit žádný duel s id profilu 0057 nebo 0658

Napadlo mě vytvořit tabulku Duel, a do ní sloupec IP adresa(fk z User) a pak dva sloupce IDprofilu(fk z Profiles) a dál už nevím. Předem díky ;)

 
Odpovědět 26.8.2013 16:44
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na dude
Drahomír Hanák:

Nejlepší by asi bylo, vytvořit unikátní index na té tabulce Duel. Ve SQL:

CREATE UNIQUE INDEX duel_unique_idx ON duel(ip, first_profile, second_profile)

Pak lze vložit:

   IP        first_profile    second_profile
---------------------------------------------------
127.0.0.1    5                1
127.0.0.1    5                3
10.0.0.150   5                1
127.0.0.1    1                5

V tabulce duel pak ale nemůže logicky být IP primární klíč.

 
Nahoru Odpovědět  +1 26.8.2013 17:54
Avatar
dude
Neregistrovaný
Avatar
dude:

díky :)

 
Nahoru Odpovědět 26.8.2013 18:24
Avatar
dude
Neregistrovaný
Avatar
dude:

ještě maličkost, mám pak ty jednotlivé sloupce přidat FK z tabulek Profile a Users?

 
Nahoru Odpovědět 26.8.2013 19:24
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na dude
Drahomír Hanák:

Určitě jo. Jinak bys totiž mohl mít nekonzistentní data. Referenční integrita, kterou definuješ právě pomocí FK, je hodně důležitým nástrojem databáze.

Jinak příště prosím použij tlačítko Odpovědět, abych si toho všiml dřív. Dostaneš tak i rychleji odpověď ;)

 
Nahoru Odpovědět 26.8.2013 22:36
Avatar
dude
Neregistrovaný
Avatar
 
Nahoru Odpovědět 27.8.2013 8:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.