początki pracy z bazą danych

0

Witam,

zaczynam moją przygodę z C#, jestem zainteresowany tworzeniem aplikacji współpracującej z bazą danych. SQL znam dość dobrze, C# prawie w ogóle. Mam na początek dwa pytania, które pomogą mi ruszyć z miejsca, dziękuję za jakąkolwiek pomoc.

  1. Znam dobrze MySql, nie znam w ogóle MSSql. Czy to duży błąd gdy C# powiąże się z bazą danych z MySqla? Czy ma to związek z gorszą wydajnością, mniejszymi możliwościami, niż w przypadku współpracy z MSSql?

  2. Widziałem już kilka tutoriali na YT, gdzie pokazywano jak się logować, taki prosty ekran startowy. Ale na każdym filmiku program się łączy z bazą przez sztywne wpisanie loginu i hasła w MySqlu, a to niby logowanie polega na stworzeniu jakiejś tabelki users z kolumnami user i password i porównywaniu czy istnieje taki a nie inny rekord w tej tabelce. I nie rozumiem czy w takim formularzu logowania, gdy MySql ma kilkunastu użytkowników, nie można logować się swoich loginem i hasłem z MySgla? Tak, aby ta aplikacja była uniwersalna dla kilkunastu użytkowników i żeby nie trzeba było wpisywać na sztywno czegoś takiego:

string myConnection = "datasource=localhost;port=3306;username=root;password=pass;";

6

Ad 1. Używanie MySQL to błąd w ogólności, nie ma związku z C#.

Ad 2. To są pojęcia na zupełnie innych poziomach abstrakcji. Użytkownicy bazy danych służą do określenia praw dostępu do obiektów bazy danych (tabel, schematów, procedur, widoków) oraz możliwych operacji (odczyt, tworzenie, modyfikacja, usuwanie). Użytkownik aplikacji jest częścią modelu danych i służy do powiązania z nim określonych rekordów.
Połączenie jednego z drugim jest skrajnie nieodpowiedzialne i niebezpieczne. Po pierwsze dlatego, że mając uprawnienia do bazy, ktoś mógłby coś nieźle popsuć, po drugie dlatego, że wszyscy mieliby dostęp do wszystkich danych.
Poza tym, myślisz że np. w takim banku każdy z 5 milionów klientów ma swojego użytkownika w bazie?

0

"Połączenie jednego z drugim jest skrajnie nieodpowiedzialne i niebezpieczne" - wiesz to też nie jest takie proste i oczywiście. Masz korporację i kilkanaście tysięcy pracowników z założonymi kontami w active directory (AD). Naturalną wtedy rzeczą wydaje się połączenie kont z AD z kontami w MSSQL. Użytkownik loguje się raz do systemu i dzięki temu uzyskuje dostęp do baz danych w zakresie przyznanych mu centralnie uprawnień.

4

A która korporacja daje bezpośredni wjazd do bazy każdemu pracownikowi?

Użytkownik loguje się do aplikacji, a aplikacja obsługuje uwierzytelnianie AD.Sama aplikacja do bazy danych łączy się na swoim userze bazodanowym, a nie dla każdego użytkownika oddzielnie na jego uprawnieniach.

1

Zamiast mysql używaj PostgreSQL

0

Jak nie zna C#, to lepiej SQL Server CE. Wszystko można wyklikać. Przy bazach "niewspomaganych" przez IDE, będzie musiał grzebać albo w kodzie, albo gdzieś głęboko w propertiesach. SQL Server (oraz CE) a także MS Access są wspomagane przez IDE

0

@Marcin.Miga: ale czemu CE, a nie Express? CE jest nierozwijany i ograniczony.

0

Dziękuje wszystkim za odpowiedzi, chociaż nie wszystko rozumiem.

To może zadam pytanie inaczej, jakie połączenie najlepiej wybrać(program do tworzenia aplikacji + baza danych) jeśli nie zna się dobrze żadnego języka programowania, a trzeba stworzyć aplikację okienkową powiązaną z bazą danych obsługująca kilkunastu użytkowników?

Mówiąc szczerze to zacząłem jakiś czas temu od zera moją przygodę w tym temacie z Libreoffice Base (taki Acess dla biednych) połączonym z MySql, Zdaję sobie sprawę że jest to "przedszkole", ale właśnie dlatego tutaj trafiłem - to połączenie coraz bardziej mnie ograniczało, tym bardziej że językiem tam używanym jest StarBasic, który mówiąc delikatnie jest mało popularny. I chciałem zamienić to na jakiś program mający więcej możliwości. Jakieś progressbary, zakładki, wykresy, dźwięki, komunikaty, ostrzeżenie itp.

Mam chęci się uczyć, tylko chciałbym moje siły skierować w dobrą stronę. Dobrze rozumiem że SQL Serwer ma również wbudowany IDE podobny do Accessa?

0

jest taka apka Sql Server Management studio i tam sobie wyklikasz (albo jak chcesz to i zadasz pytania). jak nie znasz za bardzo j. programowania no to rzeczywiście Access ;)...
ALE - w Visual studio (ide m.in. dla C#) masz też możliwość wyklikania, jeżeli to dość prosta sprawa. Na youtube możesz sobie przejrzeć typowe kontrolki dla danych (np. DataGrid) - wtedy w Visual Studio masz możliwość wyklikania wielu postawowych rzeczy.

0

Stop.... Microsoft SQL Server Developer jest pełnym, niczym nie ograniczonym serwerem SQL z bezpłatną licencją do developerów. Do nauki jak znalazł.
Poza tym MySQL nie jest już tym samym shitem co kiedyś.

0

Przecież na MySQL (czy też MariaDB) pół świata stoi. Jeśli nie więcej.

0

Pół świata żyje za mniej niż dolara dziennie. Z nich też chcesz brać przykład?

0
mihmih napisał(a):

To może zadam pytanie inaczej, jakie połączenie najlepiej wybrać(program do tworzenia aplikacji + baza danych) jeśli nie zna się dobrze żadnego języka programowania, a trzeba stworzyć aplikację okienkową powiązaną z bazą danych obsługująca kilkunastu użytkowników?

Zawsze masz SQLite, czyli - jak sama nazwa wskazuje - dietetyczną wersję SQL, niespecjalnie skomplikowaną, dobrze sprawdzającą się przy niewielkich implementacjach.

Na .NET bankowo są biblioteki do obsługi SQLite.

Prawdopodobnie nie jest wtedy dostępna integracja z Visual Studio i więcej trzeba się namachać ręcznie, ale ze względów edukacyjnych, zważywszy że samo SQLite jest konfiguracyjnie proste, może to i lepiej.

0

@somekind: @mihmih, czemuCE, a nie Expres? z kilku powodów. jednoplikowy, w związku z ty łatwo przenaszalny. Nie trzeba na kliencie NIC instalować. Expres wymaga instalacji. No i do prostych zastosowań w zupełności wystarcza.
A i wyklikać można wszystko (włącznie z datasetem). Tak to ma jeszcze tylko Access i SQL Server.

0

Czyli zakładając strukturę np. serwer i 10 komputerów połączonych siecią, to w przypadku Expressa musi być on zainstalowany na każdym komputerze? Bo myślałem że to kwestia tylko jednego pliku exe z aplikacją na każdym komputerze plus jakieś rozszerzenie, dzięki któremu program będzie się łączył siecią z SQL Expressem na serwerze.

I w przypadku takiego CE większość się wyklikuje jak w Acessie, a trudniejsze sprawy można rozwiązać C# lub VisualBasiciem? Czy jeśli już się czegoś nie wyklika to w żaden inny sposób nie można tego zrobić?

Sam kiedyś słyszałem że na MySqlu "stoi" YT, FB, Aleggro, ale to chyba były jakieś bzdury:)

Edycja:

Tak sobie przeglądam YT i nigdzie nie widzę tego o czym marzę...czyli możliwości budowania aplikacji jak w VisualStudio wybierając WindowsFormAplication, z tymi wszystkimi kontrolkami, robiąc wszystko za pomocą właściwości danych kontrolek...Czzyli podobnie jak w Acessie...Jest coś takiego w Expressie albo CE?

0
Marcin.Miga napisał(a):

@somekind: @mihmih, czemuCE, a nie Expres? z kilku powodów. jednoplikowy, w związku z ty łatwo przenaszalny. Nie trzeba na kliencie NIC instalować. Expres wymaga instalacji. No i do prostych zastosowań w zupełności wystarcza.
A i wyklikać można wszystko (włącznie z datasetem). Tak to ma jeszcze tylko Access i SQL Server.

Tylko wiedza, którą się w ten sposób zdobędzie będzie raczej niepełna.

mihmih napisał(a):

Czyli zakładając strukturę np. serwer i 10 komputerów połączonych siecią, to w przypadku Expressa musi być on zainstalowany na każdym komputerze?

Nie.

Bo myślałem że to kwestia tylko jednego pliku exe z aplikacją na każdym komputerze plus jakieś rozszerzenie, dzięki któremu program będzie się łączył siecią z SQL Expressem na serwerze.

Dobrze myślałeś.

Tak sobie przeglądam YT i nigdzie nie widzę tego o czym marzę...czyli możliwości budowania aplikacji jak w VisualStudio wybierając WindowsFormAplication, z tymi wszystkimi kontrolkami, robiąc wszystko za pomocą właściwości danych kontrolek...Czzyli podobnie jak w Acessie...Jest coś takiego w Expressie albo CE?

Nie. W SQL Server Management studio utworzysz tabele, powiązania i co tam potrzebujesz na poziomie bazy, ale aplikację będącą interfejsem do tej bazy musisz napisać sam, np. w Visual Studio.

1 użytkowników online, w tym zalogowanych: 0, gości: 1