Tabela produktów + SMS tips

 

Na wstępie chciałem wyjaśnić, że skrót SMS nie ma nic wspólnego z telefonami komórkowymi, tylko jest to skrót od SQL Management Studio. Dla osób korzystających na co dzień z SQL Server nie muszę wyjaśniać, do czego to narzędzie służy, natomiast dla początkujących znajdzie się kilka porad (niekoniecznie przydatnych 😉 ).

Przede wszystkim, w nawiązaniu do poprzednich postów, znajdujemy się w miejscu, w którym utworzone zostało menu z kategoriami. Na podstawie wyboru odpowiedniej pozycji w menu, użytkownik przenoszony jest za pomocą odnośnika do strony wyświetlającej produkty z danej grupy żywnościowej. Wykorzystany w tym celu został jeden z mechanizmów zarządzaniam stanem sesji, czyli opisane już wcześniej tzw. query strings.

Musimy mieć jednak co wyświetlać. Z tej okazji została zaprojektowana przeze mnie kolejna tabela opisująca produkty. Tak na marginesie, ktoś mógłby spytać czemu nie zaprojektowałem od razu bazy danych – odpowiadam – celem projektu jest poznanie głownie ASP.NET, a do tego kompletna baza danych nie jest mi potrzebna, gdyż ze względu na ograniczenie czasowe trwania projektu prawdopodobnie nie zostanie ona nigdy wykorzystana w pełni. Jednocześnie zmieniona została nazwa jednej z kolumn z tabeli z kategoriami tak, aby uzyskać w miarę ustandaryzowane nazewnictwo (chociaż konflikty nadal występują). Spójrzmy zatem jak wyglądają powiązane ze sobą wspomniane tabele:

tabela produktow 

Tabela produktów w wymyślonej na potrzeby projektu przeze mnie postaci przedstawia się następująco: każdy produkt posiada swoją nazwę; oczywiście poza ceną jest on charakteryzowany również przez inne atrybuty – zdecydowałem się na rozgraniczenie od siebie wagi, pojemności lub liczby sztuk. Z racji tego, że produkt może posiadać tylko jeden z tych atrybutów kolumny te posiadają możliwość przechowywania wartości NULL. W tym momencie nie przychodzi mi do głowy żadne lepsze rozwiązanie na poziomie konstrukcji bazy, które pozwoliłoby na wstawienie wartości tylko do jednej z trzech kolumn. Jeśli ktoś podsunie mi taki pomysł oczywiście będę wdzięczny 🙂 Ponadto produkt przynależy do jakiejś kategorii.

Tabele te powiązane są ze sobą relacją jeden-do-wiele. W kodzie powiązanie takie, za pomocą klucza obcego, wygląda następująco:

ALTER TABLE dbo.tProducts ADD  CONSTRAINT FK_tProducts_ProductsCategories 
FOREIGN KEY(ProductCategoryID) REFERENCES dbo.ProductsCategories (ProductCategoryID);
GO

W wywołaniu takim podajemy nazwę tabeli, w której znajdzie się klucz obcy, informacja, że będzie to CONSTRAINT, oznaczenie, że będzie to klucz obcy (FOREIGN KEY) z podaniem nazwy kolumny na której zostanie on założony oraz zaznaczenie, do jakiej tabeli i kolumny żródłowej odnosił będzie się klucz obcy.

Ograniczenie takie można również prościej wyklikać za pomocą SMS. Uczynić to można np. również przechodząc do tabeli, w której założony ma zostać klucz obcy. W katalogu Keys kliknięcie prawym przyciskiem myszy pozwala na wybranie opcji “New Foreign Key…”. Jakie pola muszą być potem wyklikane nie będę w tym miejscu opisywał.

W swojej tabeli chciałbym, żeby produkty się nie powtarzały. O ile nazwa produktu może być identyczna, to jednak już w połączeniu z określoną wagą, pojemnością lub liczbą sztuk, nie powinna się ona powtarzać. Z tego względu chciałby założyć ograniczenie typu UNIQUE na  wymienionych czterech kolumnach. Kod dla takiego ograniczenia wygląda następująco:

ALTER TABLE dbo.tProducts ADD  CONSTRAINT UQ_tProducts UNIQUE
(
	ProductName,
	Capacity,
	Weight,
	Items
)
GO


Ponownie podajemy nazwę kolumny, nazwę ograniczenia, z zaznaczeniem, że będzie to UNIQUE oraz nazwy kolumn, na których ograniczenie to ma zostać założone. Ponownie chciałbym to również uczynić za pomocą Management Studio. W katalogu Keys (ani Constraints) jednak już nie znajdziemy możliwości dodania ograniczenia typu UNIQUE. W tym celu należy przejść do tabeli i otworzyć ją w trybie Design. Następnie kliknięcie w otwartym oknie prawym klawiszem myszy umożliwia wybranie z menu kontekstowego pozycji Indexes/Keys i po zmianie odpowiednich pól ustawienie Unique Key.

Reklamy

One Response to Tabela produktów + SMS tips

  1. czakon.pl says:

    Narzędzie, o kótrym piszesz nazywa się SSMS – SQL Server Management Studio.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: