Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> wartość pola niemoże sie powtarzać
grzybowski11
post
Post #1





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 24.01.2004
Skąd: Nisko

Ostrzeżenie: (10%)
X----


Jaką właściwość powinno miec pole tak np. login aby jego nie mozna powtórzyć tej samej nazwy
Go to the top of the page
+Quote Post
tiraeth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Najlepiej tekstowe (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

ale tak na serio to chyba UNIQUE
Go to the top of the page
+Quote Post
shpyo
post
Post #3





Grupa: Zarejestrowani
Postów: 574
Pomógł: 2
Dołączył: 13.04.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


heh, zawsze mozna to zalatwic warunkiem
jezeli istnieje juz takie pole LOGIN o wartosci USER to wywala blad (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

albo nawet SELECT'em (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Przemo`
post
Post #4





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 15.05.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ma to byc parametr INDEX czy KEY[sql:1:bea67e7ce3]CREATE TABLE phpbb_auth_access (
forum_id tinyint(1),
KEY forum_id (forum_id)
);[/sql:1:bea67e7ce3]
Go to the top of the page
+Quote Post
grzybowski11
post
Post #5





Grupa: Zarejestrowani
Postów: 92
Pomógł: 0
Dołączył: 24.01.2004
Skąd: Nisko

Ostrzeżenie: (10%)
X----


chcę utworzyć tabelę która będzie przyjmował wartość która nie może się powtórzyć tak unikalny jest na tym forum użytkownik. A może zna ktoś jakiś spis co do czego służy w MySQL nie chodzi mi o kurs ale o coś takiego
INT - liczba całkowita w przypadku UNSIGNED
... itd
Go to the top of the page
+Quote Post
zalew
post
Post #6





Grupa: Zarejestrowani
Postów: 407
Pomógł: 0
Dołączył: 24.10.2002
Skąd: warszawa

Ostrzeżenie: (0%)
-----


Cytat
A może zna ktoś jakiś spis co do czego służy w MySQL nie chodzi mi o kurs ale o coś takiego
INT - liczba całkowita w przypadku UNSIGNED
... itd

dokumentacja mysql?
http://dev.mysql.com/doc/mysql/en/Column_types.html?
Go to the top of the page
+Quote Post
Indeo
post
Post #7





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

Ostrzeżenie: (0%)
-----


Jednym z podstawowych elementów logiki baz danych są indeksy.
Indeksy służą w uproszczeniu do kilku rzeczy. W skrócie indeksy są streszczeniem najwazniejszych informacji o tabelach - mogą pełnić funkcję czegoś na podobieństwo tablicy alokacji plików. Dobrze zaprojektowana baza to taka baza która jak najwięcej operacji wykonuje na indeksach a nie na samych danych.

Jeśli logika tylko pozwala uczynić coś co jest często używane indeksem unikatowym to należy to zrobić. Indeksy unikatowe po pierwsze przyspieszają wyszukiwanie (jeśli wiesz, że na liście dana pozycja występuje tylko raz to po znalezieniu pierwszego wystąpienia przerywasz szukanie, a jesli byś nie miał takiej pewności musiałbyś szukać do samego końca). Po drugie przyspieszają łączenie tabel w bardziej złożonych zapytaniach. Po trzecie indeksy unikatowe chronią strukturę logiczną bazy przed błędami logicznymi. Tak na przykład w twoim przypadku - nie może być dwóch użytkowników o tym samym loginie - dlatego login powinien być unikatowy.
Indeksy i klucze unikatowe można tworzyć na etapie tworzenia tabeli, mozna też utworzyć je konstrukcją ALTER:
  1. ALTER TABLE `child` ADD UNIQUE (`parent_id`)

Ale jeśli w tabeli będą już zdublowane wartości klucz nie zostanie utworzony.
Zabezpieczanie się przed wprowadzaniem do tabel niepoprawnych wartości można prowadzić też po stronie php (np. w komunikacji z użytkownikiem) ale ochrona samych danych po stronie bazy danych jest nieodzowna w przypadku niewychwycenia błędów przez skrypty php.

Indeksy nie musza być pojedynczymi polami tabeli - mogą być oparte na kliku polach które dopiero razem weryfikowane muszą być unikatowe - np. imię+nazwisko (zarówno imie jak i nazwisko z osobna nie mają podstaw by być unikatowe)

Co więcej ja w moich skryptach obsługi użytkowników wcale nie mam unikatowych loginów. Unikatowy musi byc użytkownik. Użytkownika nie identyfikuje po samym loginie ale po login+hasło. Więc może sie zdarzyć że dwóch użytkowników ma taki sam login ale inne hasła (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ale kombinacja login+hasło jest jak najbardziej unikatowa i przypisana do danego użytkownika.

Wreszcie najbardziej zaawansowanym aparatem ochrony integralności danych są FORAIGN KEYS (klucze obce) nadzorujące integralność na poziomie kilku tabel w bazie. Np. klienci - faktury. Klucz obcy zabezpiecza przed wpisaniem do tabeli faktury faktury na klienta którego nie ma jeszcze w tabeli klienci. I odwrotnie. Klucz obcy nie pozwoli usunąć klienta jeśli ma już wystawioną fakturę.

Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 18:09