![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 24.01.2004 Skąd: Nisko Ostrzeżenie: (10%) ![]() ![]() |
Jaką właściwość powinno miec pole tak np. login aby jego nie mozna powtórzyć tej samej nazwy
|
|
|
![]()
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 |
|
|
![]()
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) |
|
|
![]()
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] |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 24.01.2004 Skąd: Nisko Ostrzeżenie: (10%) ![]() ![]() |
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 |
|
|
![]()
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? |
|
|
![]()
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:
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 18:09 |