MC, 2025
Ilustracja do artykułu: Set MySQL – Czy naprawdę warto go używać?

Set MySQL – Czy naprawdę warto go używać?

Jeśli kiedykolwiek zastanawiałeś się, jak przechowywać wiele wartości w jednym polu bazy danych, to SET w MySQL może być idealnym rozwiązaniem. W tym artykule przyjrzymy się, czym jest typ danych SET, jakie ma zalety i jak z niego korzystać na przykładach.

Co to jest typ danych SET w MySQL?

SET to specjalny typ danych MySQL, który pozwala przechowywać wiele wartości w jednym polu tabeli. Działa podobnie do ENUM, ale zamiast jednej wartości, możemy zapisywać wiele wartości oddzielonych przecinkami.

Jak zadeklarować kolumnę SET?

Oto przykład tworzenia tabeli z kolumną SET:

CREATE TABLE Uzytkownicy (
    id INT AUTO_INCREMENT PRIMARY KEY,
    imie VARCHAR(50),
    uprawnienia SET('ADMIN', 'MODERATOR', 'UŻYTKOWNIK', 'GOŚĆ')
);

Teraz każdy użytkownik może mieć przypisane jedno lub więcej uprawnień.

Dodawanie wartości do SET w MySQL

Aby dodać nowego użytkownika z określonymi uprawnieniami, używamy INSERT:

INSERT INTO Uzytkownicy (imie, uprawnienia) 
VALUES ('Jan', 'ADMIN,MODERATOR');

W ten sposób użytkownik Jan otrzymuje zarówno prawa administratora, jak i moderatora.

Set MySQL – Przykłady praktyczne

1. Sprawdzanie wartości w SET

Chcemy znaleźć wszystkich użytkowników, którzy mają uprawnienia „ADMIN”:

SELECT * FROM Uzytkownicy WHERE FIND_IN_SET('ADMIN', uprawnienia);

Funkcja FIND_IN_SET pozwala sprawdzić, czy dana wartość istnieje w zbiorze.

2. Dodawanie nowych wartości do istniejącego zestawu

Jeśli chcemy dodać nowe uprawnienia do użytkownika, możemy to zrobić tak:

UPDATE Uzytkownicy 
SET uprawnienia = CONCAT(uprawnienia, ',GOŚĆ') 
WHERE imie = 'Jan';

Teraz Jan ma dodatkowo status gościa.

3. Usuwanie wartości z SET

Co jeśli chcemy usunąć jedną wartość z zestawu? Możemy skorzystać z REPLACE:

UPDATE Uzytkownicy 
SET uprawnienia = REPLACE(uprawnienia, 'MODERATOR', '') 
WHERE imie = 'Jan';

Teraz Jan stracił status moderatora.

Wady i zalety typu SET

Zalety:

  • Oszczędność miejsca – przechowywanie wielu wartości w jednej kolumnie.
  • Łatwa deklaracja wartości przy tworzeniu tabeli.
  • Szybkie wyszukiwanie wartości dzięki FIND_IN_SET.

Wady:

  • Trudniejsze manipulowanie danymi w porównaniu do normalizacji.
  • Brak łatwego wsparcia dla indeksowania pojedynczych wartości.
  • Nie nadaje się do skomplikowanych relacji między danymi.

Kiedy warto używać typu SET?

SET w MySQL może być użyteczny w sytuacjach, gdy mamy ograniczony, z góry ustalony zestaw wartości, np.:

  • Uprawnienia użytkowników w systemie.
  • Preferencje użytkownika (np. „newsletter, powiadomienia SMS, powiadomienia push”).
  • Oznaczenia w systemach magazynowych („Nowy, Wysłany, Zwrócony”).

Podsumowanie

SET w MySQL to potężne narzędzie, które może pomóc w organizacji danych. Jednak trzeba go stosować z rozwagą – w wielu przypadkach lepiej sprawdza się normalizacja bazy danych. Jeśli jednak masz prosty zestaw wartości i chcesz oszczędzić miejsce, to warto rozważyć jego użycie.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: