Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Enumeration w bazie danych

13 views
Skip to first unread message

mk

unread,
Dec 8, 2009, 4:24:34 AM12/8/09
to
Witam,

Korzystam z dost�pu do danych w MSSQL za pomoc� Linq. Mam tam tabel�
powiedzmy "wojew�dztwa", kt�ra ma dwie kolumny Guid i Name i przechowuje
nazwy wojew�dztw (16 rekord�w).

Nsat�pnie w kodzie, �eby rozr�ni� kt�re wojew�dztwo zosta�o wybrane
robiďż˝ coďż˝ takiego:

string strWojewodztwo = (tu jakies query);

switch(strWojewodztwo)
{
case "mazowieckie":
//rob cos
break;
case "malopolskie":
//rob cos
break;
case "dolnoslaskie":
//rob cos
break;
case "slaskie":
//rob cos
break;
.....
}

Wydaje mi si� �e nie jest to najlepszy pomys� �eby switch() orientowa�
si� na podstawie warto�ci typu string. O wiele lepiej by�o by zrobi�

public enum BinaryDataType
{
mazowieckie,
malopolskie,
doloslaskie,
slaskie,
....
}

Tylko jak dane z takiego enum'a sprz�c z daymi w bazie?
Chodzi o to, �e w jakiejs innej tabeli zamiast Guid wojewodztwa
musialbym przechowywac numer zgodny z tym w enumie.

P.S.
Wojewodztwa to tylko przyklad. W rzeczywistosci bede przetrzymywal inne
wartosci.

Karol

unread,
Dec 8, 2009, 4:09:49 PM12/8/09
to
U�ytkownik "mk" <m...@nospam.com> napisa� w wiadomo�ci grup
dyskusyjnych:hfl659$raf$1...@atlantis.news.neostrada.pl...
> Witam,

Witam

> Korzystam z dost�pu do danych w MSSQL za pomoc� Linq. Mam tam tabel�
> powiedzmy "wojew�dztwa", kt�ra ma dwie kolumny Guid i Name i przechowuje
> nazwy wojew�dztw (16 rekord�w).
>
> Nsat�pnie w kodzie, �eby rozr�ni� kt�re wojew�dztwo zosta�o wybrane robi�
> coďż˝ takiego:
>
> string strWojewodztwo = (tu jakies query);
>
> switch(strWojewodztwo)
> {
> case "mazowieckie":
> //rob cos
> break;
> case "malopolskie":
> //rob cos
> break;
> case "dolnoslaskie":
> //rob cos
> break;
> case "slaskie":
> //rob cos
> break;
> .....
> }
>
> Wydaje mi si� �e nie jest to najlepszy pomys� �eby switch() orientowa� si�
> na podstawie warto�ci typu string. O wiele lepiej by�o by zrobi�

Stringi w C# s� przechowywane w "magazynie string�w", zmienna przechowuje
tylko id z "magazynu".
Wi�c por�wnywanie string�w nie jest kosztowne, faktycznie jest to por�wnanie
dw�ch id. Ja bym zostawi� na stringach tego switcha.


> public enum BinaryDataType
> {
> mazowieckie,
> malopolskie,
> doloslaskie,
> slaskie,
> ....
> }
>
> Tylko jak dane z takiego enum'a sprz�c z daymi w bazie?
> Chodzi o to, �e w jakiejs innej tabeli zamiast Guid wojewodztwa musialbym
> przechowywac numer zgodny z tym w enumie.

Problemy przy zmianie enuma lub bazy. Bym raczej unikaďż˝.

> P.S.
> Wojewodztwa to tylko przyklad. W rzeczywistosci bede przetrzymywal inne
> wartosci.
>

> __________ Informacja programu ESET Smart Security, wersja bazy sygnatur
> wirusow 4671 (20091208) __________
>
> Wiadomosc zostala sprawdzona przez program ESET Smart Security.
>
> http://www.eset.pl lub http://www.eset.com
>
>

__________ Informacja programu ESET Smart Security, wersja bazy sygnatur wirusow 4671 (20091208) __________

Wiadomosc zostala sprawdzona przez program ESET Smart Security.

http://www.eset.pl lub http://www.eset.com

toudidel

unread,
Dec 9, 2009, 4:17:49 AM12/9/09
to

Użytkownik "mk" <m...@nospam.com> napisał w wiadomości news:hfl659$raf$1...@atlantis.news.neostrada.pl...
> Wydaje mi się że nie jest to najlepszy pomysł żeby switch() orientował
> się na podstawie wartości typu string. O wiele lepiej było by zrobić

o wiele lepiej i bezpieczniej województwa przechowywać w formacie liczbowym (który też do czegoś poza identyfikacją może się przydać) i to najlepiej nie wymyslonym przez siebie tylko jakimś, który jest uznanym standardem, np. w tym przypadku TERYT: 02 dolnośląskie, 04 kujawsko-pomorskie, ... , 32 zachodniopomorskie.

http://www.stat.gov.pl/broker/access/index.jspa
http://pl.wikipedia.org/wiki/TERYT
--
td

Wiktor S.

unread,
Dec 9, 2009, 7:08:38 AM12/9/09
to
> uznanym standardem, np. w tym przypadku TERYT: 02 dolno�l�skie, 04

> kujawsko-pomorskie, ... , 32 zachodniopomorskie.

A nieparzyste gdzie im wci�o? Reserved?


--
Azarien

toudidel

unread,
Dec 9, 2009, 9:56:03 AM12/9/09
to

Użytkownik "Wiktor S." <wswiktor&poczta,f...@no.spam> napisał w wiadomości news:hfo408$s8j$1...@news.onet.pl...
> A nieparzyste gdzie im wcięło? Reserved?

a to już pytanie do GUS albo ustawodawcy :)
--
td

3P

unread,
Dec 10, 2009, 4:00:49 PM12/10/09
to
>
> Stringi w C# s� przechowywane w "magazynie string�w", zmienna
> przechowuje tylko id z "magazynu".
> Wi�c por�wnywanie string�w nie jest kosztowne, faktycznie jest to
> por�wnanie dw�ch id. Ja bym zostawi� na stringach tego switcha.
>
Nie chodzi o wydajno�� tylko poprawne programowanie, czytelno�� kodu,
mo�liwo�� unikni�cia b��d�w.
Przecie� to nie b�dzie mia�o �adnego wp�ywu na wydajno�� aplikacji! Chyba,
�e miliony razy w jakiej�
p�tli by to por�wnywa�. A wtedy akurat por�wnanie string�w nie by�oby
dobre.

Skoro por�wnuje si� na podstawie "id", to dlaczego s� r�nice w czasach
por�wnania przy u�yciu
==, equals, string.compare (z r�nymi parametrami)?

>
>> public enum BinaryDataType
>> {
>> mazowieckie,
>> malopolskie,
>> doloslaskie,
>> slaskie,
>> ....
>> }
>>
>> Tylko jak dane z takiego enum'a sprz�c z daymi w bazie?
>> Chodzi o to, �e w jakiejs innej tabeli zamiast Guid wojewodztwa
>> musialbym przechowywac numer zgodny z tym w enumie.
>
> Problemy przy zmianie enuma lub bazy. Bym raczej unikaďż˝.

Jak s� stringi to r�wnie� masz problem jak zmienisz baz� danych.


Mo�esz trzyma� stringi a potem zrobi� tak.

string wojewodztwo = WyciagnijZBazy();

Wojewodztwo w = (Wojewodztwo)Enum.Parse(typeof(Wojewodztwo), wojewodztwo);

bodziec

unread,
Dec 11, 2009, 6:09:18 AM12/11/09
to
On 10 Gru, 22:00, 3P <nos...@serwer.pl> wrote:
> > Stringi w C# s przechowywane w "magazynie string w", zmienna  

> > przechowuje tylko id z "magazynu".
> > Wi c por wnywanie string w nie jest kosztowne, faktycznie jest to  
> > por wnanie dw ch id. Ja bym zostawi na stringach tego switcha.
>
> Nie chodzi o wydajno tylko poprawne programowanie, czytelno kodu,  
> mo liwo unikni cia b d w.
> Przecie to nie b dzie mia o adnego wp ywu na wydajno aplikacji! Chyba,  
> e miliony razy w jakiej
> p tli by to por wnywa . A wtedy akurat por wnanie string w nie by oby  
> dobre.
>
> Skoro por wnuje si na podstawie "id", to dlaczego s r nice w czasach  
> por wnania przy u yciu
> ==, equals, string.compare (z r nymi parametrami)?

>
>
>
> >> public enum BinaryDataType
> >> {
> >>    mazowieckie,
> >>    malopolskie,
> >>    doloslaskie,
> >>    slaskie,
> >>    ....
> >> }
>
> >> Tylko jak dane z takiego enum'a sprz c z daymi w bazie?
> >> Chodzi o to, e w jakiejs innej tabeli zamiast Guid wojewodztwa  

> >> musialbym przechowywac numer zgodny z tym w enumie.
>
> > Problemy przy zmianie enuma lub bazy. Bym raczej unika .
>
> Jak s stringi to r wnie masz problem jak zmienisz baz danych.
>
> Mo esz trzyma stringi a potem zrobi tak.

>
> string wojewodztwo = WyciagnijZBazy();
>
> Wojewodztwo w = (Wojewodztwo)Enum.Parse(typeof(Wojewodztwo), wojewodztwo);

Można zrobić tworzenie kodu enuma na podstawie tabeli w bazie danych.
Wtedy po przekompilowaniu będziesz miał dostęp do nazwy województwa a
po rzutowaniu na int jego id
Wadą jest to że trzeba się trzymać schematu że jeżeli coś dodam do tej
tabeli to musze odpalić zrzucanie do enum i przekompilować

0 new messages